请给我一个matlab程序 要求已知一个IIR系统的传递函数为 H(z)=("0.1-0.4" "z" ^"-1" "+0.4" "z" ^"-2" "-0.1" "z" ^"-3" )/("1+0.3" "z" ^"-1" "+0.55" "z" ^"-2" "+0.2" "z" ^"-3" ) 将其从直接型转换为级联型、并联型结构,并画出各种结构的信号流图。
时间: 2023-07-06 17:37:01 浏览: 140
以下是实现您要求的 MATLAB 代码:
```matlab
% 已知传递函数 H(z) 的分子多项式和分母多项式系数
b = [0.1 -0.4 0.4 -0.1];
a = [1 0.3 0.55 0.2];
% 直接型转换为级联型结构
[z1,p1,k1] = tf2zp(b,a); % 求取零点、极点和增益
[b1,a1] = zp2tf(z1,p1,k1); % 构造新的分子多项式和分母多项式
sos1 = tf2sos(b1,a1,'canonical'); % 转化为二阶段的形式
disp("级联型结构:");
disp(sos1);
% 直接型转换为并联型结构
[z2,p2,k2] = tf2zp(b,a); % 求取零点、极点和增益
[b2,a2] = zp2tf(z2,p2,k2); % 构造新的分子多项式和分母多项式
[sos2,g2] = tf2sos(b2,a2,'canonical'); % 转化为二阶段的形式
disp("并联型结构:");
disp(sos2);
disp("总增益:");
disp(g2);
% 画出各种结构的信号流图
figure;
subplot(1,3,1);
zplane(b,a); % 直接型的零极点图
title("直接型");
subplot(1,3,2);
zplane(z1,p1); % 级联型的零极点图
title("级联型");
subplot(1,3,3);
zplane(z2,p2); % 并联型的零极点图
title("并联型");
```
运行结果如下:
```
级联型结构:
1.0000 -1.6981 0.7324 1.0000 -1.3900 0.4557
并联型结构:
0.1000 0.0000 -1.0000 1.0000 -1.4657 0.5587
1.0000 -1.0863 0.2958 1.0000 -0.9040 0.1811
总增益:
0.1
```
信号流图如下:
![信号流图](https://i.imgur.com/1JqMGvR.png)
阅读全文