/usr/share/octave/packages/control-2.6.2/@ss/display.m is in octave-control 2.6.2-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | ## Copyright (C) 2009-2014 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 <http://www.gnu.org/licenses/>.
## -*- texinfo -*-
## Display routine for SS objects.
## Author: Lukas Reichlin <lukas.reichlin@gmail.com>
## 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
|