0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 1 % DISPERSION computes the dispersion function
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: DISPERSION computes the dispersion function
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 5 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 6 % CALL: bs = dipersion(in,pl)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 7 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 8 % INPUTS: in - matrix objects with input signals to the system
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 9 % model - symbolic models containing the transfer function model
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 10 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 11 % pl - parameter list
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 12 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 13 % OUTPUTS: bs - dispersion function AO
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 14 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 15 % <a href="matlab:utils.helper.displayMethodInfo('matrix', 'dispersion')">Parameters Description</a>
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 16 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 17 % VERSION: $Id: dispersion.m,v 1.1 2011/06/22 09:54:19 miquel Exp $
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 18 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 19 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 20
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 21 function varargout = dispersion(varargin)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 22
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 23 % Check if this is a call for parameters
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 24 if utils.helper.isinfocall(varargin{:})
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 25 varargout{1} = getInfo(varargin{3});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 26 return
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 27 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 28
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 29 import utils.const.*
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 30 utils.helper.msg(msg.PROC3, 'running %s/%s', mfilename('class'), mfilename);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 31
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 32 % Method can not be used as a modifier
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 33 if nargout == 0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 34 error('### crb cannot be used as a modifier. Please give an output variable.');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 35 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 36
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 37 % Collect input variable names
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 38 in_names = cell(size(varargin));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 39 for ii = 1:nargin,in_names{ii} = inputname(ii);end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 40
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 41 % Collect all AOs smodels and plists
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 42 [mtxs, mtxs_invars] = utils.helper.collect_objects(varargin(:), 'matrix', in_names);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 43 pl = utils.helper.collect_objects(varargin(:), 'plist', in_names);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 44
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 45 % Combine plists
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 46 pl = parse(pl, getDefaultPlist);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 47
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 48 % get params
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 49 params = find(pl,'FitParams');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 50 numparams = find(pl,'paramsValues');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 51 mmdl = find(pl,'model');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 52 channel = find(pl,'channel');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 53 mtxns = find(pl,'noise');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 54 outModel = find(pl,'outModel');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 55 bmdl = find(pl,'built-in');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 56 f1 = find(pl,'f1');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 57 f2 = find(pl,'f2');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 58 pseudoinv = find(pl,'pinv');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 59 tol = find(pl,'tol');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 60 outNames = find(pl,'outNames');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 61 inNames = find(pl,'inNames');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 62
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 63 % Decide on a deep copy or a modify
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 64 fin = copy(mtxs, nargout);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 65 n = copy(mtxns, nargout);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 66 mdl = copy(mmdl,1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 67
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 68 % Get number of experiments
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 69 nexp = numel(fin);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 70
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 71 % fft
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 72 % fin = fft(in);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 73
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 74 % N should get before spliting, in order to convert correctly from psd to
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 75 % fft
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 76 N = length(fin(1).getObjectAtIndex(1).x);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 77
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 78 % Get rid of fft f =0, reduce frequency range if needed
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 79 if ~isempty(f1) && ~isempty(f2)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 80 fin = split(fin,plist('frequencies',[f1 f2]));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 81 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 82
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 83 FMall = zeros(numel(params),numel(params));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 84 % loop over experiments
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 85 for k = 1:nexp
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 86
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 87 utils.helper.msg(msg.IMPORTANT, sprintf('Analysis of experiment #%d',k), mfilename('class'), mfilename);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 88
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 89 % if (((numel(n(1).objs)) == 2) && (numel(fin(1).objs) == 2))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 90
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 91 % use signal fft to get frequency vector. Take into account signal
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 92 % could be empty or set to zero
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 93 % 1st channel
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 94 if all(fin(k).getObjectAtIndex(1,1).y == 0) || isempty(fin(k).getObjectAtIndex(1,1).y)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 95 i1 = ao(plist('type','fsdata','xvals',0,'yvals',0));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 96 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 97 i1 = fin(k).getObjectAtIndex(1,1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 98 freqs = i1.x;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 99 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 100 % 2nd channel
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 101 if all(fin(k).getObjectAtIndex(2,1).y == 0) || isempty(fin(k).getObjectAtIndex(2,1).y)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 102 i2 = ao(plist('type','fsdata','xvals',0,'yvals',0));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 103 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 104 i2 = fin(k).getObjectAtIndex(2,1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 105 freqs = i2.x;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 106 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 107
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 108 % Compute psd
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 109 n1 = lpsd(n(k).getObjectAtIndex(1,1));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 110 n2 = lpsd(n(k).getObjectAtIndex(2,1));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 111 n12 = lcpsd(n(k).getObjectAtIndex(1,1),n(k).getObjectAtIndex(2,1));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 112
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 113 % interpolate to given frequencies
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 114 % noise
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 115 S11 = interp(n1,plist('vertices',freqs));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 116 S12 = interp(n12,plist('vertices',freqs));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 117 S22 = interp(n2,plist('vertices',freqs));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 118 S21 = conj(S12);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 119
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 120 % get some parameters used below
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 121 fs = S11.fs;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 122
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 123
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 124 % if (isempty(outModel))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 125
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 126 % if ~isempty(bmdl)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 127 % compute built-in smodels
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 128 % for i = 1:4
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 129 % if strcmp(bmdl{i},'0');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 130 % h(i) = smodel('0');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 131 % h(i).setXvar('f');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 132 % h(i).setXvals(freqs);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 133 % h(i).setParams(params,numparams);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 134 % else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 135 % h(i) = smodel(plist('built-in',bmdl{i},'f',freqs));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 136 % % set all params to all models. It is not true but harmless
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 137 % for ii = 1:numel(params)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 138 % vecparams(ii) = {numparams(ii)*ones(size(freqs))};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 139 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 140 % h(i).setParams(params,vecparams);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 141 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 142 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 143 % elseif ~isempty(mdl) && all(strcmp(class(mdl),'matrix'))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 144
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 145 for i = 1:numel(mdl.objs)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 146 % set Xvals
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 147 h(i) = mdl.getObjectAtIndex(i).setXvals(freqs);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 148 % set alias
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 149 h(i).assignalias(mdl.objs(i),plist('xvals',freqs));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 150 % set paramaters
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 151 h(i).setParams(params,numparams);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 152 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 153 % differentiate and eval
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 154 for i = 1:length(params)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 155 utils.helper.msg(msg.IMPORTANT, sprintf('computing symbolic differentiation with respect %s',params{i}), mfilename('class'), mfilename);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 156 % differentiate symbolically
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 157 dH11 = diff(h(1),params{i});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 158 dH12 = diff(h(3),params{i}); % taking into account matrix index convention h(2) > H(2,1)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 159 dH21 = diff(h(2),params{i});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 160 dH22 = diff(h(4),params{i});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 161 % evaluate
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 162 d11(i) = eval(dH11,plist('output type','fsdata','output x',freqs));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 163 d12(i) = eval(dH12,plist('output type','fsdata','output x',freqs));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 164 d21(i) = eval(dH21,plist('output type','fsdata','output x',freqs));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 165 d22(i) = eval(dH22,plist('output type','fsdata','output x',freqs));
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 % elseif ~isempty(mdl) && all(strcmp(class(mdl),'ssm'))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 169 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 170 % meval = copy(mdl,1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 171 % % set parameter values
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 172 % meval.doSetParameters(params, numparams);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 173 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 174 % % make numeric
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 175 % % meval.doSubsParameters(params, true);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 176 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 177 % % get the differentiation step
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 178 % step = find(pl,'diffStep');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 179 % if isempty(step)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 180 % error('### Please input a step for the numerical differentiation')
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 % % differentiate and eval
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 184 % for i = 1:length(params)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 185 % utils.helper.msg(msg.IMPORTANT, sprintf('computing numerical differentiation with respect %s, Step:%4.2d ',params{i},step(i)), mfilename('class'), mfilename);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 186 % % differentiate numerically
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 187 % dH = meval.parameterDiff(plist('names', params(i),'values',step(i)));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 188 % % create plist with correct outNames (since parameterDiff change them)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 189 % out1 = strrep(outNames{1},'.', sprintf('_DIFF_%s.',params{i})); % 2x2 case
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 190 % out2 =strrep(outNames{2},'.', sprintf('_DIFF_%s.',params{i}));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 191 % spl = plist('set', 'for bode', ...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 192 % 'outputs', {out1,out2}, ...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 193 % 'inputs', inNames, ...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 194 % 'reorganize', true,...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 195 % 'f', freqs);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 196 % % do bode
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 197 % d = bode(dH, spl);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 198 % % assign according matlab's matrix notation: H(1,1)->h(1) H(2,1)->h(2) H(1,2)->h(3) H(2,2)->h(4)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 199 % d11(i) = d(1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 200 % d21(i) = d(2);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 201 % d12(i) = d(3);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 202 % d22(i) = d(4);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 203 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 204 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 205 % else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 206 % error('### please introduce models for the transfer functions')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 207 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 208
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 209 % elseif (~isempty(outModel))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 210 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 211 % % if(~isempty(outModel))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 212 % for lll=1:size(outModel,1)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 213 % for kkk=1:size(outModel,2)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 214 % outModel(lll,kkk) = split(outModel(lll,kkk),plist('frequencies',[f1 f2]));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 215 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 216 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 217 % %end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 218 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 219 % % Avoid numerical differentiation (faster for the magnetic case)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 220 % Param{1} = [1 0;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 221 % 0 0;];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 222 % Param{2} = [0 0;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 223 % 0 1;];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 224 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 225 % for pp = 1:length(params)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 226 % for ll = 1:size(outModel,1)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 227 % for kk = 1:size(Param{pp},2)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 228 % % index convention: H(1,1)->h(1) H(2,1)->h(2) H(1,2)->h(3) H(2,2)->h(4)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 229 % tmp = 0;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 230 % for innerIndex = 1:size(outModel,2)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 231 % tmp = tmp + outModel(ll,innerIndex).y * Param{pp}(innerIndex,kk);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 232 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 233 % h{pp}(:,(kk-1)*size(outModel,1) + ll) = tmp;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 234 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 235 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 236 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 237 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 238 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 239 % for i = 1:length(params)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 240 % d11(i).y = h{i}(:,1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 241 % d21(i).y = h{i}(:,2);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 242 % d12(i).y = h{i}(:,3);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 243 % d22(i).y = h{i}(:,4);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 244 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 245 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 246 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 247
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 248 % scaling of PSD
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 249 % PSD = 2/(N*fs) * FFT *conj(FFT)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 250 C11 = N*fs/2.*S11.y;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 251 C22 = N*fs/2.*S22.y;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 252 C12 = N*fs/2.*S12.y;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 253 C21 = N*fs/2.*S21.y;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 254
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 255 % compute elements of inverse cross-spectrum matrix
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 256 InvS11 = (C22./(C11.*C22 - C12.*C21));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 257 InvS22 = (C11./(C11.*C22 - C12.*C21));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 258 InvS12 = (C21./(C11.*C22 - C12.*C21));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 259 InvS21 = (C12./(C11.*C22 - C12.*C21));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 260
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 261
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 262 % compute Fisher Matrix
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 263 for i =1:length(params)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 264 for j =1:length(params)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 265
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 266 v1v1 = conj(d11(i).y.*i1.y + d12(i).y.*i2.y).*(d11(j).y.*i1.y + d12(j).y.*i2.y);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 267 v2v2 = conj(d21(i).y.*i1.y + d22(i).y.*i2.y).*(d21(j).y.*i1.y + d22(j).y.*i2.y);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 268 v1v2 = conj(d11(i).y.*i1.y + d12(i).y.*i2.y).*(d21(j).y.*i1.y + d22(j).y.*i2.y);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 269 v2v1 = conj(d21(i).y.*i1.y + d22(i).y.*i2.y).*(d11(j).y.*i1.y + d12(j).y.*i2.y);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 270
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 271 FisMat(i,j) = sum(real(InvS11.*v1v1 + InvS22.*v2v2 - InvS12.*v1v2 - InvS21.*v2v1));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 272 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 273 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 274 utils.helper.msg(msg.IMPORTANT, sprintf('rank(FisMat) = %d', rank(FisMat)));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 275
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 276 for kk = 1:numel(freqs)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 277 % create input signal with power at single freq.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 278 % depending on input channel
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 279 p = zeros(1,numel(freqs));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 280 if channel == 1
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 281 p(kk) = sum(i1.y);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 282 % create aos
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 283 i1single = ao(plist('Xvals',freqs,'Yvals',p));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 284 i2single = ao(plist('Xvals',freqs,'Yvals',zeros(1,numel(freqs))));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 285 elseif channel == 2
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 286 p(kk) = sum(i2.y);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 287 % create aos
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 288 i1single = ao(plist('Xvals',freqs,'Yvals',zeros(1,numel(freqs))));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 289 i2single = ao(plist('Xvals',freqs,'Yvals',p));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 290 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 291 error('### wrong channel')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 292 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 293
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 294 % compute Fisher Matrix for single frequencies
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 295 for i =1:length(params)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 296 for j =1:length(params)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 297
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 298 v1v1 = conj(d11(i).y.*i1single.y + d12(i).y.*i2single.y).*(d11(j).y.*i1single.y + d12(j).y.*i2single.y);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 299 v2v2 = conj(d21(i).y.*i1single.y + d22(i).y.*i2single.y).*(d21(j).y.*i1single.y + d22(j).y.*i2single.y);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 300 v1v2 = conj(d11(i).y.*i1single.y + d12(i).y.*i2single.y).*(d21(j).y.*i1single.y + d22(j).y.*i2single.y);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 301 v2v1 = conj(d21(i).y.*i1single.y + d22(i).y.*i2single.y).*(d11(j).y.*i1single.y + d12(j).y.*i2single.y);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 302
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 303 FisMatsingle(i,j) = sum(real(InvS11.*v1v1 + InvS22.*v2v2 - InvS12.*v1v2 - InvS21.*v2v1));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 304 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 305 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 306 d(kk) = trace(FisMat\FisMatsingle)/numel(i1.x); % had to divide for num. freqs
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 307 % d(kk) = trace(pinv(FisMat)*FisMatsingle)/numel(i1.x); % had to divide for num. freqs
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 308
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 309 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 310
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 311 % % store Fisher Matrix for this run
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 312 % FM{k} = FisMat;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 313 % % adding up
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 314 % FMall = FMall + FisMat;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 315
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 316 % elseif ((numel(n(1).objs) == 3) && (numel(in.objs) == 4) && ~isempty(outModel))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 317 % % this is only valid for the magnetic model, where we have 4 inputs
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 318 % % (corresponding to the 4 conformator waveforms) and 3 outputs
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 319 % % (corresponding to IFO.x12, IFO.eta1 and IFO.phi1). And there is a
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 320 % % contribution of an outModel converting the conformator waveforms
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 321 % % into forces and torques.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 322 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 323 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 324 % % For other cases not implemented yet.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 325 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 326 % % use signal fft to get frequency vector. Take into account signal
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 327 % % could be empty or set to zero
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 328 % % 1st channel
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 329 % freqs = fin.getObjectAtIndex(1,1).x;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 330 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 331 % for ii = 1:numel(n.objs)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 332 % for jj = ii:numel(n.objs)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 333 % % Compute psd
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 334 % if (ii==jj)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 335 % spec(ii,jj) = psd(n(k).getObjectAtIndex(ii), pl);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 336 % S2(ii,jj) = interp(spec(ii,jj),plist('vertices',freqs,'method','linear'));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 337 % else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 338 % spec(ii,jj) = cpsd(n(k).getObjectAtIndex(ii),n(k).getObjectAtIndex(jj),pl);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 339 % S2(ii,jj) = interp(spec(ii,jj),plist('vertices',freqs,'method','linear'));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 340 % S2(jj,ii) = conj(S2(ii,jj));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 341 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 342 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 343 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 344 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 345 % S = matrix(S2,plist('shape',[numel(n.objs) numel(n.objs)]));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 346 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 347 % % get some parameters used below
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 348 % fs = S.getObjectAtIndex(1,1).fs;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 349 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 350 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 351 % if(~isempty(outModel))
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 352 % for lll=1:size(outModel,1)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 353 % for kkk=1:size(outModel,2)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 354 % outModel(lll,kkk) = split(outModel(lll,kkk),plist('frequencies',[f1 f2]));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 355 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 356 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 357 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 358 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 359 % % Avoid numerical differentiation (faster for the magnetic case)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 360 % Param{1} = [ 1 0 0 0;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 361 % 0 0 0 0;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 362 % 0 0 0 0;];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 363 % Param{2} = [ 0 1 0 0;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 364 % 0 0 0 0;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 365 % 0 0 0 0;];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 366 % Param{3} = [ 0 0 0 0;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 367 % 0 0 1 0;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 368 % 0 0 0 0;];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 369 % Param{4} = [ 0 0 0 0;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 370 % 0 0 0 0;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 371 % 0 0 0 1;];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 372 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 373 % % scaling of PSD
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 374 % % PSD = 2/(N*fs) * FFT *conj(FFT)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 375 % for j = 1: numel(S.objs)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 376 % % spectra to variance
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 377 % C(:,j) = (N*fs/2)*S.objs(j).data.getY;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 378 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 379 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 380 % detm = (C(:,1).*C(:,5).*C(:,9) + ...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 381 % C(:,2).*C(:,6).*C(:,7) + ...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 382 % C(:,3).*C(:,4).*C(:,8) -...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 383 % C(:,7).*C(:,5).*C(:,3) -...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 384 % C(:,8).*C(:,6).*C(:,1) -...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 385 % C(:,9).*C(:,4).*C(:,2));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 386 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 387 % InvS11 = (C(:,5).*C(:,9) - C(:,8).*C(:,6))./detm;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 388 % InvS12 = -(C(:,4).*C(:,9) - C(:,7).*C(:,6))./detm;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 389 % InvS13 = (C(:,4).*C(:,8) - C(:,7).*C(:,5))./detm;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 390 % InvS21 = -(C(:,2).*C(:,9) - C(:,8).*C(:,3))./detm;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 391 % InvS22 = (C(:,1).*C(:,9) - C(:,7).*C(:,3))./detm;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 392 % InvS23 = -(C(:,1).*C(:,8) - C(:,7).*C(:,2))./detm;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 393 % InvS31 = (C(:,2).*C(:,6) - C(:,5).*C(:,3))./detm;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 394 % InvS32 = -(C(:,1).*C(:,6) - C(:,4).*C(:,3))./detm;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 395 % InvS33 = (C(:,1).*C(:,5) - C(:,4).*C(:,2))./detm;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 396 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 397 % for pp = 1:length(params)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 398 % for ll = 1:size(outModel,1)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 399 % for kk = 1:size(Param{pp},2)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 400 % % index convention: H(1,1)->h(1) H(2,1)->h(2) H(1,2)->h(3) H(2,2)->h(4)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 401 % tmp = 0;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 402 % for innerIndex = 1:size(outModel,2)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 403 % tmp = tmp + outModel(ll,innerIndex).y * Param{pp}(innerIndex,kk);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 404 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 405 % h{pp}(:,(kk-1)*size(outModel,1) + ll) = tmp;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 406 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 407 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 408 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 409 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 410 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 411 % for kk = 1:numel(in.objs)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 412 % inV(:,kk) = fin.objs(kk).data.getY;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 413 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 414 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 415 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 416 % % compute Fisher Matrix
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 417 % for i =1:length(params)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 418 % for j =1:length(params)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 419 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 420 % for ll = 1:size(outModel,1)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 421 % tmp = 0;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 422 % for kk = 1:size(Param{1},2)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 423 % tmp = tmp + h{i}(:,(kk-1)*size(outModel,1) + ll).*inV(:,kk);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 424 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 425 % v{i}(:,ll) = tmp;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 426 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 427 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 428 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 429 % for ll = 1:size(outModel,1)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 430 % tmp = 0;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 431 % for kk = 1:size(Param{1},2)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 432 % tmp = tmp + h{j}(:,(kk-1)*size(outModel,1) + ll).*inV(:,kk);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 433 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 434 % v{j}(:,ll) = tmp;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 435 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 436 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 437 % v1v1 = conj(v{i}(:,1)).*v{j}(:,1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 438 % v1v2 = conj(v{i}(:,1)).*v{j}(:,2);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 439 % v1v3 = conj(v{i}(:,1)).*v{j}(:,3);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 440 % v2v1 = conj(v{i}(:,2)).*v{j}(:,1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 441 % v2v2 = conj(v{i}(:,2)).*v{j}(:,2);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 442 % v2v3 = conj(v{i}(:,2)).*v{j}(:,3);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 443 % v3v1 = conj(v{i}(:,3)).*v{j}(:,1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 444 % v3v2 = conj(v{i}(:,3)).*v{j}(:,2);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 445 % v3v3 = conj(v{i}(:,3)).*v{j}(:,3);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 446 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 447 % FisMat(i,j) = sum(real(InvS11.*v1v1 +...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 448 % InvS12.*v1v2 +...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 449 % InvS13.*v1v3 +...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 450 % InvS21.*v2v1 +...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 451 % InvS22.*v2v2 +...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 452 % InvS23.*v2v3 +...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 453 % InvS31.*v3v1 +...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 454 % InvS32.*v3v2 +...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 455 % InvS33.*v3v3));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 456 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 457 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 458 % % store Fisher Matrix for this run
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 459 % FM{k} = FisMat;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 460 % % adding up
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 461 % FMall = FMall + FisMat;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 462 % else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 463 % error('Implemented cases: 2 inputs / 2outputs (TN3045 analysis), and 4 inputs / 3 outpus (magnetic complete analysis model. Other cases have not been implemented yet. Sorry for the inconvenience)');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 464 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 465
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 466
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 467 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 468
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 469 % inverse is the optimal covariance matrix
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 470 % if pseudoinv && isempty(tol)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 471 % cov = pinv(FMall);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 472 % elseif pseudoinv
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 473 % cov = pinv(FMall,tol);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 474 % else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 475 % cov = FMall\eye(size(FMall));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 476 % end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 477
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 478
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 479 % create AO
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 480 out = ao(plist('Xvals',freqs,'Yvals',d,'type','fsdata','fs',fs,'name',''));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 481 % spectrum in the procinfo
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 482 if channel == 1
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 483 out.setProcinfo(plist('S11',S11));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 484 elseif channel == 2
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 485 out.setProcinfo(plist('S22',S22));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 486 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 487 % Fisher Matrix in the procinfo
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 488 out.setProcinfo(plist('FisMat',FisMat));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 489
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 490 varargout{1} = out;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 491 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 492
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 493 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 494
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 495
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 496 %--------------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 497 % Get Info Object
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 498 %--------------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 499 function ii = getInfo(varargin)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 500 if nargin == 1 && strcmpi(varargin{1}, 'None')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 501 sets = {};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 502 pls = [];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 503 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 504 sets = {'Default'};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 505 pls = getDefaultPlist;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 506 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 507 % Build info object
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 508 ii = minfo(mfilename, 'ao', 'ltpda', utils.const.categories.sigproc, '$Id: dispersion.m,v 1.1 2011/06/22 09:54:19 miquel Exp $', sets, pls);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 509 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 510
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 511 %--------------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 512 % Get Default Plist
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 513 %--------------------------------------------------------------------------
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 514 function plout = getDefaultPlist()
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 515 persistent pl;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 516 if exist('pl', 'var')==0 || isempty(pl)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 517 pl = buildplist();
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 518 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 519 plout = pl;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 520 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 521
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 522 function pl = buildplist()
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 523 pl = plist.LPSD_PLIST;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 524 pset(pl,'Navs',1)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 525
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 526 p = plist({'f1', 'Initial frequency for the analysis'}, paramValue.EMPTY_DOUBLE);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 527 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 528
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 529 p = plist({'f2', 'Final frequency for the analysis'}, paramValue.EMPTY_DOUBLE);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 530 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 531
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 532 p = plist({'FitParamas', 'Parameters of the model'}, paramValue.EMPTY_STRING);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 533 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 534
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 535 p = plist({'model','An array of matrix models'}, paramValue.EMPTY_STRING);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 536 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 537
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 538 p = plist({'noise','An array of matrices with the cross-spectrum matrices'}, paramValue.EMPTY_STRING);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 539 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 540
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 541 p = plist({'built-in','Symbolic models of the system as a string of built-in models'}, paramValue.EMPTY_STRING);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 542 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 543
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 544 p = plist({'frequencies','Array of start/sop frequencies where the analysis is performed'}, paramValue.EMPTY_STRING);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 545 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 546
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 547 p = plist({'pinv','Use the Penrose-Moore pseudoinverse'}, paramValue.TRUE_FALSE);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 548 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 549
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 550 p = plist({'tol','Tolerance for the Penrose-Moore pseudoinverse'}, paramValue.EMPTY_DOUBLE);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 551 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 552
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 553 p = plist({'diffStep','Numerical differentiation step for ssm models'}, paramValue.EMPTY_DOUBLE);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 554 pl.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 555
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 556 end