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

📄 mvrlocus.m

📁 控制系统计算机辅助设计——MATLAB语言与应用(源代码)
💻 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 + -