2024年4月27日发(作者:)

MATLAB函数定义

D-3-1: routh()—由特征多项式构造劳斯阵列表

function [rtab,info]=routh(den)

info=[];

vec1=den(1:2:length(den)); nrT=length(vec1);

vec2=den(2:2:length(den)-1);

rtab=[vec1; vec2, zeros(1,nrT-length(vec2))];

for k=1:length(den)-2,

alpha(k)=vec1(1)/vec2(1);

for i=1:length(vec2),

a3(i)=rtab(k,i+1)-alpha(k)*rtab(k+1,i+1);

end

if sum(abs(a3))==0

a3=polyder(vec2);

info=[info,'All elements in row ',...

int2str(k+2) ' are zeros;'];

elseif abs(a3(1))

a3(1)=1e-6;

info=[info,'Replaced first element;'];

end

rtab=[rtab; a3, zeros(1,nrT-length(a3))];

vec1=vec2; vec2=a3;

end

D-3-2: hurwitz()—由特征多项式构造胡尔维茨矩阵function

H=hurwitz(den)

n=length(den)-1;

for i=1:n

i1=floor(i/2);

if i==i1*2

hsub1=den(1:2:n+1);

i1=i1-1;

else

hsub1=den(2:2:n+1);

end

l1=length(hsub1);

H(i,:)=[zeros(1,i1),hsub1,zeros(1,n-i1-l1)];

end

D-3-3: posdef()—判定矩阵的正定性

function [key,sdet]=posdef(A)

[nr,nc]=size(A); sdet=[];

for i=1:nr

sdet=[sdet,det(A(1:i,1:i))];

end

key=1;

if any(sdet<=0)

key=0;

end

D-4-1:stepchar()—计算时域响应的性能指标function

[pos,tr,ts,tp]=stepchar(g0,delta)

[y,t]=step(g0);

[mp,ind]=max(y); dimt=length(t); yss=y(dimt);

pos=100*(mp-yss)/yss;

tp=t(ind);

for i=1:dimt

if y(i)>=1

tr=t(i);

break;

end

end;