📄 mvrlocus.m
字号:
function rl = mvrlocus(A,B,C,D,k)
% MVRLOCUS Multivariable root locus of a
% square MIMO system.
% MVRLOCUS(A,B,C,D,k) a matrix with as many rows as
% there are gains in vector k. Each row contains
% the pole positions for the system when feedback
% -kI is applied. Zero values are allowed in the
% gain vector.
% P. Phaal, November 1987
% Copyright (c) 1987 by GEC Engineering Research Centre & Cambridge Control Ltd
% MRN0019
% MRN0034
% MRN0035
nargs=nargin;
error(nargchk(5,5,nargs));
abcdchk(A,B,C,D);
[nout,nin] = size(D);
if nout ~= nin, error(' System must be square'), end
k0index = find(k==0); % Find any zero gain values
if length(k0index) > 0,
k1index = find(k); % Non-zero gains
k1 = k(k1index);
olroots = eig(A)';
for i=1:length(k0index), olr = [olr;olroots]; end;
rl(k0index,:) = olr;
else
k1 = k;
end
if length(k1) > 0, % If there are any non-zero gains
w = ones(1,length(k1))./k1; % k1 has no zero gains
f = mv2res(-D,C,-B,A,w);
rl1 = feig(k1,f);
end
if length(k0index) > 0,
rl(k1index,:) = rl1;
elseif length(k1) > 0,
rl = rl1;
else
rl = [];
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -