Home > m > timetools > statespacefunctions > utp_ltpda_ss_iir2ss.m

utp_ltpda_ss_iir2ss

PURPOSE ^

test function for ltpda_ss_miir2ss

SYNOPSIS ^

function varargout = utp_ltpda_ss_iir2ss(varargin)

DESCRIPTION ^

 test function for ltpda_ss_miir2ss 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 DESCRIPTION: test function for ltpda_ss_miir2ss 

 CALL: utp_ltpda_ss_miir2ss

 INPUTS: 
 
 OUTPUTS: 1/0

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function varargout = utp_ltpda_ss_iir2ss(varargin)
0002 % test function for ltpda_ss_miir2ss
0003 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0004 %
0005 % DESCRIPTION: test function for ltpda_ss_miir2ss
0006 %
0007 % CALL: utp_ltpda_ss_miir2ss
0008 %
0009 % INPUTS:
0010 %
0011 % OUTPUTS: 1/0
0012 
0013 % VERSION: $Id: utp_ltpda_ss_iir2ss.m,v 1.3 2008/03/11 16:52:56 adrien Exp $
0014 %
0015 % HISTORY: 26-02-2008 A Grynagier
0016 % 22-01-2008 A Grynagier
0017 % Creation 02-01-2008 A Grynagier
0018 %
0019 % TO DO : more numerical checks with vpa function and jordan block
0020 % decomposition in ltpda_ss_miir2ss
0021 %
0022 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0023 ALGONAME = mfilename;
0024 VERSION =  '$Id: utp_ltpda_ss_iir2ss.m,v 1.3 2008/03/11 16:52:56 adrien Exp $';
0025 CATEGORY = 'STATESPACE';
0026 display(['starting ' ALGONAME]);
0027 
0028 if not(isempty(varargin))
0029     if isequal( varargin{1}, 'Version')
0030         varargout = VERSION;
0031         return;
0032     elseif isequal(varargin{1}, 'Params')
0033         varargout = plist();
0034         return;
0035     elseif isequal(varargin{1}, 'Category')
0036         varargout = CATEGORY;
0037         return;
0038     end
0039 end
0040 result = 1;
0041 
0042 %% part to generate a miir object
0043 f = miir(plist('type', 'bandpass','fs', 1000,'fc', [50 100],'order', 3,'gain',2,'ripple',0.7));
0044 
0045 name = f.name;
0046 T = 1/(f.fs);
0047 ntaps =f.ntaps;
0048 % poles
0049 d1 = [1 1];
0050 d2 = [1 2];
0051 d3 = conv([1 3],[1 3]);
0052 d4 = [1 8 17];
0053 d5 = conv([1 10 29],conv([1 10 29],[1 10 29]));
0054 d6 = conv([1 6],conv([1 6],[1 6]));
0055 n1 = [0 1];
0056 n2 = [0 2];
0057 n3 = [0 3 4];
0058 n4 = [0 5 6];
0059 n5 = [0 0 0 0 0 7 8] + conv([1 10 29],[0 0 0 9 10]) + conv([1 10 29],conv([1 10 29],[0 11 12]));
0060 n6 = [0 0 0 13] + conv([0 1 6],[0 14]) + conv([1 6],conv([1 6],[0 15]));
0061 d0 = -1;
0062 f.a = conv(n1,conv(d2,conv(d3,conv(d4,conv(d5,d6))))) + conv(d1,conv(n2,conv(d3,conv(d4,conv(d5,d6))))) + conv(d1,conv(d2,conv(n3,conv(d4,conv(d5,d6))))) + conv(d1,conv(d2,conv(d3,conv(n4,conv(d5,d6))))) + conv(d1,conv(d2,conv(d3,conv(d4,conv(n5,d6))))) + conv(d1,conv(d2,conv(d3,conv(d4,conv(d5,n6)))))+d0* conv(d1,conv(d2,conv(d3,conv(d4,conv(d5,d6)))));
0063 f.b =  conv(d1,conv(d2,conv(d3,conv(d4,conv(d5,d6)))));
0064 f.gain = 1;
0065 
0066 subsys = ltpda_ss_iir2ss(f, f , f); %this fails
0067 subsys = ltpda_ss_iir2ss([f, f , f]);
0068 
0069 %% part with small numerical test
0070 f.a = [1 2 4];
0071 f.b = [1 3 2];
0072 subsys = ltpda_ss_iir2ss(f);
0073 AMAT = find(subsys,'AMAT');
0074 BMATS = find(subsys,'BMATS');
0075 CMAT = find(subsys,'CMAT');
0076 DMATS = find(subsys,'DMATS');
0077 a = AMAT{1};
0078 b = BMATS{1};
0079 c = CMAT{1};
0080 d = DMATS{1};
0081 A=[0 1; 2 3];
0082 B=[0;1];
0083 C=[2 -1];
0084 D=1;
0085 if (norm(A-[0 1; 2 3]) + norm(B-[0;1]) + norm(C-[2 -1]) + norm(D-1))>1e-14
0086     result = 0;
0087 end
0088 
0089 varargout = {result};
0090 
0091 end

Generated on Mon 31-Mar-2008 13:54:54 by m2html © 2003