0001 function iirs = ltpda_ss_tomiir(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 ALGONAME = mfilename;
0029 VERSION = '$Id: ltpda_ss_tomiir.html,v 1.1 2008/03/01 12:29:32 hewitson Exp $';
0030 display(['starting ' mfilename]);
0031
0032 if isequal( varargin{1}, 'Version')
0033 listMeta = VERSION;
0034 return;
0035 elseif isequal(varargin{1}, 'Params')
0036 listMeta = plist();
0037 return;
0038 elseif isequal(varargin{1}, 'Category')
0039 listMeta = 'To be defined / State Space / Time domain analysis';
0040 return;
0041 end
0042
0043
0044 syst = varargin{1};
0045
0046 AMAT = find(syst,'AMAT');
0047 CMAT = find(syst,'CMAT');
0048 BMATS = find(syst,'BMATS');
0049 DMATS = find(syst,'DMATS');
0050 Ninputs = find(syst,'NBINPUTS');
0051 NAME = find(syst,'NAME');
0052 INPUTSIZES = find(syst,'IMPUTSIZES');
0053 INPUTNAMES = find(syst,'INPUTNAMES');
0054 STEPSIZE = find(syst,'TIMESTEP');
0055
0056 syms s
0057
0058 iirs{1,1,1} = miir();
0059 if STEPSIZE == 0
0060
0061 display('Error because timestep must be nonzero to make a time discrete filter');
0062 STEPSIZE = 1;
0063 end
0064 for i=1:Ninputs
0065 if size(AMAT{1},1)==0
0066 D = DMATS{i};
0067 C = CMAT{1};
0068 for j=1:size(C,1)
0069 for k=1:size(D,2)
0070 a = D(j,k);
0071 b = 1;
0072 iirs{i,j,k} = miir(plist('a', a, 'b', b, 'gain', 1, 'ntaps', 1, 'name', [NAME,'_',INPUTNAMES{i}], 'fs', 1/STEPSIZE));
0073 end
0074 end
0075 elseif size(BMATS{i},2)==0 ||size(CMAT{1},1)==0
0076 iirs{i,1,1} = {};
0077 else
0078 C = CMAT{1};
0079 B = BMATS{i};
0080 D = DMATS{i};
0081 for j=1:size(C,1)
0082 for k=1:size(B,2)
0083 [a,b] = ss2tf(AMAT{1}, B(:,k), C(j,:), D(j,k));
0084 Gain=1;
0085 iirs{i,j,k} = miir(plist('a', a, 'b', b, 'gain', Gain, 'ntaps', 1, 'name', [NAME,'_',INPUTNAMES{i}], 'fs', 1/STEPSIZE));
0086 end
0087 end
0088 end
0089 end
0090
0091 end
0092