0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 1 % BODECST makes a bodecst plot from the given inputs to outputs.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 3 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 4 % DESCRIPTION: BODECST makes a bodecst plot from the given inputs to outputs.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 5 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 6 % CALL: as = bodecst(sys, pl)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 7 % as = bodecst(sys, 'key1', 'option1')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 8 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 9 % INPUTS:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 10 % 'sys' - ssm object
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 11 % 'pl' - plist of options
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 12 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 13 % OUTPUTS:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 14 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 15 % 'as' - array of output AOs containing the requested responses.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 16 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 17 % <a href="matlab:utils.helper.displayMethodInfo('ssm', 'bodecst')">Parameters Description</a>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 18 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 19 % VERSION: $Id: bodecst.m,v 1.14 2011/04/08 08:56:23 hewitson Exp $
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 20 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 21 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 22
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 23 function varargout = bodecst(varargin)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 24
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 25 %% starting initial checks
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 26 % Check if this is a call for parameters
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 27 if utils.helper.isinfocall(varargin{:})
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 28 varargout{1} = getInfo(varargin{3});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 29 return
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 30 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 31
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 32 utils.helper.msg(utils.const.msg.MNAME, ['running ', mfilename]);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 33
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 34 % Collect input variable names
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 35 in_names = cell(size(varargin));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 36 for ii = 1:nargin,in_names{ii} = inputname(ii);end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 37
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 38 % Collect all AOs and plists
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 39 [system, ssm_invars, rest] = utils.helper.collect_objects(varargin(:), 'ssm', in_names);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 40 [pl, invars2, rest] = utils.helper.collect_objects(rest(:), 'plist');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 41 if ~isempty(rest)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 42 pl = combine(pl, plist(rest{:}));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 43 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 44 pl = combine(pl, getDefaultPlist());
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 45
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 46 %%% Internal call: Only one object + don't look for a plist
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 47 internal = strcmp(varargin{end}, 'internal');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 48
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 49 %% retrieving system's infos
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 50 if numel(system)~=1
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 51 error('we should have only one ssm and one plist object as an input')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 52 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 53 if ~internal
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 54 inhist = system.hist;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 55 if ~system.isStable
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 56 error('input ssm is not stable!')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 57 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 58 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 59 if (system.isnumerical == 0)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 60 warning(['The system ' system.name ' is symbolic. The system is made numeric for bode calculation.'])
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 61 sys = copy(system,1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 62 sys.keepParameters;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 63 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 64 sys = system;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 65 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 66
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 67 %% Compute frequency vector
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 68 f = pl.find('f');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 69 if isempty(f)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 70 % finding "f2"
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 71 if isempty(pl.find('f2'))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 72 if sys.timestep>0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 73 f2 = 0.5/sys.timestep;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 74 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 75 f2 = 1;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 76 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 77 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 78 f2 = pl.find('f2');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 79 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 80 % finding "f1"
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 81 if isempty(pl.find('f1'))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 82 f1 = f2*1e-5;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 83 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 84 f1 = pl.find('f1');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 85 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 86 nf = pl.find('nf');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 87 scale = pl.find('scale');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 88 % building "f" vector
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 89 switch lower(scale)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 90 case 'log'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 91 f = logspace(log10(f1), log10(f2), nf);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 92 case 'lin'
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 93 f = linspace(f1, f2, nf);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 94 otherwise
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 95 error('### Unknown scale option');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 96 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 97 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 98
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 99 % Is the f vector in an AO?
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 100 if isa(f, 'ao') && (isa(f.data, 'fsdata') || isa(f.data, 'xydata'))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 101 f = f.x;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 102 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 103
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 104 % Compute omega
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 105 w = 2*pi*f;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 106
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 107 if find(pl, 'reorganize')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 108 sys = reorganize(sys, pl, 'set', 'for bode', 'internal', 'internal');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 109 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 110
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 111 %% getting system's i/o sizes
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 112 timestep = sys.timestep;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 113 fs = 1/timestep;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 114
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 115 inputSizes = sys.inputsizes;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 116 outputSizes = sys.outputsizes;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 117
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 118 Nin = inputSizes(1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 119 NstatesOut = outputSizes(1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 120 NoutputsOut = outputSizes(2);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 121
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 122 A = sys.amats{1,1};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 123 Coutputs = sys.cmats{2,1};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 124 Cstates = sys.cmats{1,1};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 125 B = sys.bmats{1,1};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 126 D = sys.dmats{2,1};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 127 Dstates = zeros(size(Cstates,1), size(D,2));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 128
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 129 %% bode computation
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 130 sys_ss = ss(A, B, [Cstates; Coutputs], [Dstates; D], timestep);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 131 [mag,phase] = bode(sys_ss, w);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 132 resps = mag.*(cos(phase*pi/180) + 1i.*sin(phase*pi/180));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 133 %% build AO
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 134
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 135 myinfo = getInfo('None');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 136 isysStr = sys.name;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 137 ao_out = ao.initObjectWithSize(NstatesOut+NoutputsOut, Nin);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 138 myInfo = getInfo('None');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 139
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 140 for ii=1:Nin
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 141 for oo=1:NstatesOut
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 142 ao_out(oo,ii).setData(fsdata(f, squeeze(resps(oo,ii,:)), fs));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 143 if ~ internal
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 144 ao_out(oo,ii).setName( [sys.inputs(1).ports(ii).name '-->' sys.outputs(1).ports(oo).name]);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 145 ao_out(oo,ii).setXunits('Hz');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 146 ao_out(oo,ii).setYunits( simplify(sys.outputs(1).ports(oo).units / sys.inputs(1).ports(ii).units));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 147 ao_out(oo,ii).setDescription(...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 148 ['Bode of ' isysStr, ' from ', sys.inputs(1).ports(ii).description,...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 149 ' to ' sys.outputs(1).ports(oo).description]);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 150
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 151 ao_out(oo,ii).addHistory(myInfo, pl, ssm_invars, inhist );
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 152 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 153 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 154 for oo=1:NoutputsOut
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 155 ao_out(NstatesOut+oo,ii).setData(fsdata(f, squeeze(resps(NstatesOut+oo,ii,:)), fs));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 156 if ~ internal
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 157 ao_out(NstatesOut+oo,ii).setName( [sys.inputs(1).ports(ii).name '-->' sys.outputs(2).ports(oo).name]);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 158 ao_out(NstatesOut+oo,ii).setXunits('Hz');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 159 ao_out(NstatesOut+oo,ii).setYunits( simplify(sys.outputs(2).ports(oo).units / sys.inputs(1).ports(ii).units));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 160 ao_out(NstatesOut+oo,ii).setDescription(...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 161 ['Bode of ' isysStr, ' from ', sys.inputs(1).ports(ii).description,...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 162 ' to ' sys.outputs(2).ports(oo).description]);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 163 ao_out(NstatesOut+oo,ii).addHistory(myinfo, pl, ssm_invars(1), inhist );
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 164 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 165 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 166 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 167
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 168 %% Set output depending on nargout
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 169 if nargout == numel(ao_out)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 170 for jj=1:nargout
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 171 varargout{jj} = ao_out(jj);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 172 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 173 elseif nargout == 1;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 174 varargout{1} = ao_out;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 175 elseif nargout == 0;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 176 iplot(ao_out);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 177 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 178 error('Wrong number of outputs')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 179 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 180
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 181 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 182
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 183
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 184 %--------------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 185 % Get Info Object
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 186 %--------------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 187 function ii = getInfo(varargin)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 188
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 189 if nargin == 1 && strcmpi(varargin{1}, 'None')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 190 sets = {};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 191 pl = [];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 192 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 193 sets = {'Default'};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 194 pl = getDefaultPlist;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 195 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 196 % Build info object
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 197 ii = minfo(mfilename, 'ssm', 'ltpda', utils.const.categories.sigproc, '$Id: bodecst.m,v 1.14 2011/04/08 08:56:23 hewitson Exp $', sets, pl);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 198 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 199
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 200 %--------------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 201 % Get Default Plist
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 202 %--------------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 203 function pl = getDefaultPlist()
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 204 pl = ssm.getInfo('reorganize', 'for bode').plists;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 205 pl.remove('set');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 206
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 207 p = param({'f', 'A frequency vector (replaces f1, f2 and nf).'}, paramValue.EMPTY_DOUBLE) ;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 208 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 209
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 210 p = param({'f2', 'The maximum frequency. Default is Nyquist or 1Hz.'}, paramValue.EMPTY_DOUBLE);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 211 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 212
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 213 p = param({'f1', 'The minimum frequency. Default is f2*1e-5.'}, paramValue.EMPTY_DOUBLE);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 214 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 215
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 216 p = param({'nf', 'The number of frequency bins.'}, paramValue.DOUBLE_VALUE(1000));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 217 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 218
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 219 p = param({'scale', 'Distribute frequencies on a ''log'' or ''lin'' scale.'}, {1, {'log', 'lin'}, paramValue.SINGLE});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 220 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 221
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 222 p = param({'reorganize', 'When set to 0, this means the ssm does not need be modified to match the requested i/o. Faster but dangerous!'}, paramValue.TRUE_FALSE);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 223 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 224
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 225 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 226
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 227
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 228
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 229