Home > classes > @ssm > ssmFromMiir.m

ssmFromMiir

PURPOSE ^

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

SYNOPSIS ^

function varargout = ssmFromMiir(varargin)

DESCRIPTION ^

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 FUNCTION:    ssmFromMiir

 DESCRIPTION: Construct a statespace model from a miir

 CALL:        see ssm

 PARAMETER:   
              

 HISTORY:     15-04-2008 Adrien
              Creation

 TODO:        check must be made there is no pole zero cancelation
 
 VERSION :    '$Id:$';
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0002 %
0003 % FUNCTION:    ssmFromMiir
0004 %
0005 % DESCRIPTION: Construct a statespace model from a miir
0006 %
0007 % CALL:        see ssm
0008 %
0009 % PARAMETER:
0010 %
0011 %
0012 % HISTORY:     15-04-2008 Adrien
0013 %              Creation
0014 %
0015 % TODO:        check must be made there is no pole zero cancelation
0016 %
0017 % VERSION :    '$Id:$';
0018 %
0019 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0020 function varargout = ssmFromMiir(varargin)
0021 utils.helper.msg(utils.const.msg.MNAME, ['running ', mfilename]);
0022 
0023 miirsin = varargin{1};
0024 ssmout(length(miirsin)) = ssm();
0025 for i =1:length(miirsin)
0026     num =  miirsin(i).a;
0027     den =  miirsin(i).b;
0028     num = num/den(1);
0029     den = den/den(1);
0030     Nss = size(den,2)-1;
0031     if length(num)<Nss+1
0032       num = [zeros(1,Nss+1-length(num)) num];
0033     end
0034     [q,r] = deconv(num,den);%polynmial division for den = conv(num,q)+r .
0035     if ~length(q)==1
0036       error('system may be non caussal');
0037     end
0038     
0039     ssmout(i).dmats = {q};
0040     ssmout(i).amats = {[zeros(Nss-1,1) eye(Nss-1); fliplr(-den(2:(Nss+1)))]};
0041     ssmout(i).bmats = {[zeros(Nss-1,1) ;1]};
0042     ssmout(i).cmats = {r(2:(Nss+1))};
0043 
0044     ssmout(i).name  = miirsin(i).name;
0045     ssmout(i).timestep = 1/(miirsin(i).fs);
0046     ssmout(i).inputnames = {'U'};
0047     ssmout(i).outputnames = {'Y'};
0048     ssmout(i).addHistory(ssm.getInfo('ssm', 'From Miir'), plist(), {''}, miirsin(i).hist);
0049 end
0050 
0051 varargout = {ssmout};
0052 end
0053 
0054

Generated on Mon 08-Sep-2008 13:18:47 by m2html © 2003