PI_gensys_singularC
PURPOSE 
[C1,C2,C3,C4, C5, F1, F2, F3, F4, F5, M1, M2, UAVinv,FL_RANK, V01, V02]...
SYNOPSIS 
function [C1,C2,C3,C4, C5, F1, F2, F3, F4, F5, M1, M2, UAVinv, FL_RANK, V01, V02]=PI_gensys_singularC(C1in, C2in, C3in, C4in, C5in, F1, F2, F3, F4, F5, V01, V02, level)
DESCRIPTION 
CROSS-REFERENCE INFORMATION 
This function calls:
- PI_gensys_singularC [C1,C2,C3,C4, C5, F1, F2, F3, F4, F5, M1, M2, UAVinv,FL_RANK, V01, V02]...
This function is called by:
- PI_gensys System given as
- PI_gensys_singularC [C1,C2,C3,C4, C5, F1, F2, F3, F4, F5, M1, M2, UAVinv,FL_RANK, V01, V02]...
SOURCE CODE 
0001 function [C1,C2,C3,C4, C5, F1, F2, F3, F4, F5, M1, M2, UAVinv, FL_RANK, V01, V02]=PI_gensys_singularC(C1in, C2in, C3in, C4in, C5in, F1, F2, F3, F4, F5, V01, V02, level)
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 level=level+1
0028 if level>100
0029 error( ' PI_gensys_singularC recurssion exceeeded its maximum of 100 iterations! ');
0030 end
0031 warning('', '');
0032 M1=[];M2=[]; UAVinv=[];
0033
0034
0035
0036
0037 [J0,K0,L0] = svd(C2in);
0038 n=size(C2in,1);
0039 K_RANK=rank(K0);
0040 J2=J0(1:n,K_RANK+1:n);
0041
0042 J2C1=J2'*C1in;
0043 M = null(J2C1)';
0044 MJCinv= inv([M;J2C1]);
0045 [sm1, sm2]=size (M');
0046 M1=MJCinv(1:sm1,1:sm2);
0047 M2=MJCinv(1:sm1,1+sm2:end);
0048 FL_RANK=rank(M);
0049
0050
0051 C5=[ C5in; J2C1*F5];
0052 C4=[C4in C3in*M2; J2C1*F4 J2C1*F3*M2];
0053 C3=[ C3in*M1; J2C1*F3*M1];
0054 C2=[C2in C1in*M2; J2'*(C4in+C1in*F2) J2'*(C3in+C1in*F1)*M2];
0055 C1=[ C1in*M1; J2'*(C3in+C1in*F1)*M1];
0056
0057
0058 F5 =M*F5 ;
0059 F4 =[M*F4 M*F3*M2];
0060 F3 = M*F3*M1;
0061 F2 =[M*F2 M*F1*M2];
0062 F1 = M*F1*M1;
0063
0064 V02=[V02 V01*M2];
0065 V01=V01*M1;
0066
0067 warning('', '');
0068 singular=0;
0069 try
0070 if rcond(C2) < 1e-8
0071 singular=1;
0072 else
0073 UAVinv=inv(C2);
0074 [LastWarningTxt LastWarningID]=lastwarn;
0075 if any(any(isinf(UAVinv)))==1
0076 singular=1;
0077 end
0078 end
0079
0080 if singular==1 || strcmp('MATLAB:nearlySingularMatrix',LastWarningID)==1 || ...
0081 strcmp('MATLAB:illConditionedMatrix',LastWarningID)==1 || ...
0082 strcmp('MATLAB:singularMatrix',LastWarningID)==1
0083 [C1,C2,C3,C4, C5, F1, F2, F3, F4, F5, M1, M2, UAVinv, FL_RANK, V01, V02] = PI_gensys_singularC(C1,C2,C3,C4, C5, F1, F2, F3, F4, F5, V01, V02, level);
0084 end
0085 catch
0086 [errmsg, errcode]=lasterr;
0087 warning(['error callig PI_gensys_singularC: ' errmsg ],'errcode');
0088 error('errcode',['error callig PI_gensys_singularC: ' errmsg ]);
0089 end
0090
0091 return;
0092
Generated on Tue 22-May-2012 02:40:23 by m2html © 2005