传递函数转约旦(Jordan)规范型

b=[2 14 24];%分子
a=[1 5 8 4];%分母
[r,p,~]=residue(b,a);%留数
%输出r为留数
%p为极点
%有重根时,按次数有da到xiao排列
conp=size(p,1);
B=zeros(conp,1);
k=zeros(conp,1);
j=zeros(conp,1);
rr=zeros(conp,1);
j=j+1;
for i=1:conp-1
    if p(i+1)==p(i)
        j(i)=j(i)+1;
        k(i)=1;
    end
end
for i=1:conp-1
    if k(i)==1
        rr=zeros(1,j(i));
        for ii=i:j(i)
           rr(ii)=r(i+ii-1);
        end
        rrr=fliplr(rr);
        for ii=i:j(i)
             r(i+ii-1)=rrr(ii);
        end
    end
end
A=diag(p');
for i=1:conp-1
    if k(i)==1
        for ii=i:j(i)-1
            A(ii,ii+1)=1;
            B(ii+1,1)=1;
        end
    else B(i+j(i),1)=1;
    end
end
C=r';
D=0;
W=[A,B;
    C,D]

猜你喜欢

转载自blog.csdn.net/xiaolizi_331/article/details/121164945