frnmat.m

来自「包含大量遗传算法程序」· M 代码 · 共 46 行

M
46
字号
function [d,rsigma]=frnmat(w,f)

%FRNMAT	Calculates the normalized row dominance scalings.

%	FRNMAT(W,F) returns an MVFR matrix of real positive diagonal

%	pre-multiplier matrices which scale Fm so that the row

%	diagonal dominance of Fm*Dm are normalize to the same value.

%	Fm and Dm are the component matrices of F and D respectively.

%	W is the associated frequency vector.

%

%	[D,Rsigma]=FRNMAT(W,F) also returns the normalized row

%	sigmas in the column vector Rsigma.

%

%	To check the row dominance use

%	  plotdb(w,frdom(w,fmulf(w,f,d)))

%	The stability similarity transformation is    Dm^(-1) * Fm * Dm

%	  fmulf(w,finv(w,d),fmulf(w,f,d))

%

%	See also FCNMAT,FRDOM,FCDOM



%	Dr M.P. Ford 22nd August 1987

% Copyright (c) 1987 by GEC Engineering Research Centre & Cambridge Control Ltd

%	MRN0019



[m,n]=fsize(w,f);

if m~=n

   error('System is not square')

end

f=abs(f);

lw=length(w);

k=1:m;

d=[];

rsigma=[];

for i=0:lw-1

  fm=f(k+m*i,:);  % break up f into matrices

  fd=diag(fm);

  fm=fm-diag(fd);       %  make the diagonals zero

  fd=diag(fd.^(-1));    %  make 1/diagonal

  [di,v]=eig(fd*fm);

  [sigma,i]=max(max(v));     % max eigenvalue

  if (sigma<=0) | any(di(:,i)<=0)

      error('System is not Irreducible')

  end

  d=[d;diag(di(:,i))];

  rsigma=[rsigma;sigma];

end



⌨️ 快捷键说明

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