⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transf.m

📁 线性时变系统控制器设计的工具包
💻 M
字号:
% function [a,b1,b2,c1,c2,d11,d12,d21,d22,r12inv,r21inv,q12,q21,fail] = ...%            transf(sys,nmeas,nctrl)%% This program is designed to scale the d12 and d21 matrices to satisfy the % standard formulas and check the rank conditions.% function [a,b1,b2,c1,c2,d11,d12,d21,d22,r12inv,r21inv,q12,q21,fail] = ...            transf(sys,nmeas,nctrl) [systype,no,ni,nx] = minfo(sys); nd1 = ni-nctrl; nd2 = nctrl; ne1 = no-nmeas; ne2 = nmeas; [a,b,c,d] = unpck(sys); b1 = b(:,1:nd1); b2 = b(:,nd1+1:ni); c1 = c(1:ne1,:); c2 = c(ne1+1:no,:); d11 = d(1:ne1,1:nd1); d12 = d(1:ne1,nd1+1:ni); d21 = d(ne1+1:no,1:nd1); d22 = d(ne1+1:no,nd1+1:ni); fail = 0;%% Determine if |A-jwI  B2 | has full column rank at w = 0.%              |  C1   D12|% ctmp = [a b2;c1 d12]; [nr,nc] = size(ctmp); crk = rank(ctmp,eps); if (crk ~= nc)   disp(' [A B2;C1 D12] DOES NOT HAVE FULL COLUMN RANK AT W = 0 ')   fail = 1;   return; end%% Determine if |A-jwI  B1 | has full row rank at w = 0.%              |  C2   D21|% rtmp = [a b1;c2 d21]; [nr,nc] = size(rtmp); rrk = rank(rtmp,eps); if (rrk ~= nr)   disp(' [A B1;C2 D21] DOES NOT HAVE FULL ROW RANK AT W = 0 ')   fail = 1;   return; end%% Determine if D12 has full row rank and scale D12 to Q12*D12*R12INV = |0|.%                                                                      |I|% [q12,r12] = qr(d12); rrk = rank(r12,eps); if (rrk ~= nd2)   disp(' D12 DOES NOT HAVE FULL COLUMN RANK')   fail = 1;   return; end q12 = [q12(:,(nd2+1):ne1),q12(:,1:nd2)]'; r12inv = inv(r12(1:nd2,:));%% Determine if D21 has full column rank and scale D21 to R21INV'*D21*Q21 = [0 I].% [q21,r21] = qr(d21'); crk = rank(r21,eps); if (crk ~= ne2)   disp(' D21 DOES NOT HAVE FULL ROW RANK')   fail = 1;   return; end q21 = [q21(:,(ne2+1):nd1),q21(:,1:ne2)]; r21inv = inv(r21(1:ne2,:)); c1 = q12*c1; c2 = r21inv'*c2;% cc = [c1;c2]; b1 = b1*q21; b2 = b2*r12inv;% bb = [b1,b2]; d11 = q12*d11*q21; d12 = [zeros(ne1-nctrl,nctrl);eye(nctrl)]; d21 = [zeros(nmeas,nd1-nmeas) eye(nmeas)]; d22 = d22;% dd = [d11 d12;d21 d22];% sys = pck(aa,bb,cc,dd);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -