X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=CreaPhase.git;a=blobdiff_plain;f=octave_packages%2Fcontrol-2.3.52%2F%40ss%2Fdisplay.m;fp=octave_packages%2Fcontrol-2.3.52%2F%40ss%2Fdisplay.m;h=f739aba0a701fcb80e2df40837207117ffd80b07;hp=0000000000000000000000000000000000000000;hb=f5f7a74bd8a4900f0b797da6783be80e11a68d86;hpb=1705066eceaaea976f010f669ce8e972f3734b05 diff --git a/octave_packages/control-2.3.52/@ss/display.m b/octave_packages/control-2.3.52/@ss/display.m new file mode 100644 index 0000000..f739aba --- /dev/null +++ b/octave_packages/control-2.3.52/@ss/display.m @@ -0,0 +1,97 @@ +## Copyright (C) 2009, 2010 Lukas F. Reichlin +## +## This file is part of LTI Syncope. +## +## LTI Syncope is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## LTI Syncope is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with LTI Syncope. If not, see . + +## -*- texinfo -*- +## Display routine for SS objects. + +## Author: Lukas Reichlin +## Created: September 2009 +## Version: 0.2 + +function display (sys) + + sysname = inputname (1); + [inname, outname, tsam] = __lti_data__ (sys.lti); + stname = sys.stname; + + inname = __labels__ (inname, "u"); + outname = __labels__ (outname, "y"); + stname = __labels__ (stname, "x"); + + disp (""); + + if (! isempty (sys.e)) + __disp_mat__ (sys.e, [sysname, ".e"], stname, stname); + endif + + if (! isempty (sys.a)) + __disp_mat__ (sys.a, [sysname, ".a"], stname, stname); + __disp_mat__ (sys.b, [sysname, ".b"], stname, inname); + __disp_mat__ (sys.c, [sysname, ".c"], outname, stname); + endif + + __disp_mat__ (sys.d, [sysname, ".d"], outname, inname); + + display (sys.lti); # display sampling time + + if (tsam == -2) + disp ("Static gain."); + elseif (tsam == 0) + disp ("Continuous-time model."); + else + disp ("Discrete-time model."); + endif + +endfunction + + +function __disp_mat__ (m, mname, rname, cname) + + MAX_LEN = 12; # max length of row name and column name + [mrows, mcols] = size (m); + + row_name = strjust (strvcat (" ", rname), "left"); + row_name = row_name(:, 1 : min (MAX_LEN, end)); + row_name = horzcat (repmat (" ", mrows+1, 3), row_name); + + mat = cell (1, mcols); + + for k = 1 : mcols + cname{k} = cname{k}(:, 1 : min (MAX_LEN, end)); + acol = vertcat (cname(k), cellstr (deblank (num2str (m(:, k), 4)))); + mat{k} = strjust (strvcat (acol{:}), "right"); + endfor + + lcols = cellfun (@columns, mat); + lcols_max = 2 + max (horzcat (lcols, 1)); + + for k = 1 : mcols + mat{k} = horzcat (repmat (" ", mrows+1, lcols_max-lcols(k)), mat{k}); + endfor + + tsize = terminal_size (); + dispcols = max (1, floor ((tsize(2) - columns (row_name)) / lcols_max)); + disprows = max (1, ceil (mcols / dispcols)); + + disp ([mname, " ="]); + + for k = 1 : disprows + disp (horzcat (row_name, mat{1+(k-1)*dispcols : min (mcols, k*dispcols)})); + disp (""); + endfor + +endfunction \ No newline at end of file