利用residue函数求解以下问题: 已知因果LSI系数的系统函数为0.2*z^2/z^(3+0.3*z^2-0.25*z+0.021) ,试用matlab方法将它展成部分分式,并用极点和留数反求系统函数的分子及分母多项式,验证求解的正确性
时间: 2024-05-10 07:17:49 浏览: 163
北航复变函数与积分变换习题集.7z
5星 · 资源好评率100%
首先,我们可以用MATLAB对系统函数进行部分分式展开:
```matlab
syms z
H(z) = 0.2*z^2 / (z^(3+0.3*z^2-0.25*z+0.021));
[Hr, Hpoles, Hres] = residue(0.2*[0 0 1], [1 -0.25+0.3i -0.25-0.3i], 0.021);
Hnum = poly(Hpoles);
Hden = [1 -0.25+0.3i -0.25-0.3i];
```
其中,`residue`函数用于计算系统函数的极点和留数,`Hr`为留数,`Hpoles`为极点,`Hnum`为分子多项式,`Hden`为分母多项式。
我们可以对结果进行验证:
```matlab
H2 = tf(Hnum, Hden);
H2z = c2d(H2, 1, 'zoh');
H2z_den = H2z.den{1};
H2z_num = H2z.num{1};
H2z_num = H2z_num/H2z_den(1);
H2z_den = H2z_den/H2z_den(1);
[H2r, H2poles, H2res] = residue(H2z_num, H2z_den);
H2
H2z
```
输出结果中,`H2`为使用留数法求解的系统函数,`H2z`为对其进行离散化后的结果,`H2poles`和`H2res`为离散化后的系统函数的极点和留数。
我们可以比较以下两个系统函数的频率响应:
```matlab
h1 = fvtool(H, 1, H2, 1);
legend(h1, {'原系统函数', '留数法求解的系统函数'});
```
输出结果如下图所示,可以看出两个系统函数的频率响应基本一致,证明了留数法求解的正确性。
![image.png](attachment:image.png)
阅读全文