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

📄 dir2cas.m

📁 直接型到级联型的形式转换 % [b0,B,A]=dir2cas(b,a) %b 为直接型的分子多项式系数 %a 为直接型的分母多项式系数 %b0为增益系数 %B 为包含各bk的K乘3维实系数
💻 M
字号:
function [b0,B,A]=dir2cas(b,a)
%直接型到级联型的形式转换
%
%[b0,B,A]=dir2cas(b,a)
%b 为直接型的分子多项式系数
%a 为直接型的分母多项式系数
%b0为增益系数
%B 为包含各bk的K乘3维实系数矩阵
%A 为包含各ak的K乘3维实系数矩阵
%


%计算增益系数
b0=b(1);
b=b/b0;
a0=a(1);
a=a/a0;
b0=b0/a0;
%
M=length(b);
N=length(a);
if N>M
    b=[b zeros(1,N-M)];
else 
    a=[a zeros(1,M-N)];
end
   

%
K=floor(N/2);
%floor向负无穷方向取整数
B=zeros(K,3);
A=zeros(K,3);
if K*2==N
    b=[b 0];
    a=[a 0];
end



%
broots=cplxpair(roots(b));  
%cplxpair 按共轭复数对对复数分组
aroots=cplxpair(roots(a));
for i=1:2:2*K;
    Brow=broots(i:1:i+1,:);
    %抽出由i和i+1的非零元所对应的行,构成一个新的子矩阵
    Brow=real(poly(Brow));
    %poly 特征多项式
    %求复数实部
    B(fix((i+1)/2),:)=Brow;
    %fix 向零方向取整数
    Arow=aroots(i:1:i+1,:);
    Arow=real(poly(Arow));
    A(fix((i+1)/2),:)=Brow;
end

⌨️ 快捷键说明

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