我想把一个传递函数转换成零极点增益,然后返回到传递函数形式。
据我所知,zp2tf的输出应该返回原来的传递函数。然而,我似乎无法让这件事奏效。
我有一个表格的5阶传递函数:

我继续寻找这个传递函数的零点和极点,看看哪一个极点可以被移除,以减少顺序。由于该模型由电气部分和机械部分组成,因此电气部分的时间常数与机械时间常数相比非常小,因此可以用增益代替电气系统,得到一个等效的四阶系统。
为此,我使用了MathWorks上可用的这段代码,上面的5阶TF:
b = [0.0001 10];
a = [0.005 5.00010060 0.661600001 61.01102010 2.1101 10];
fvtool(b,a,'polezero')
[b,a] = eqtflength(b,a);
[z,p,k] = tf2zp(b,a) 产出如下,这正是我所期望的:
z = -100000
k = 0.02

以及等价的PZ-地图:

上述结果表明,与电路相关的极,它是在较远的左边。这可以被移除,从而将传递函数的阶数从5阶降到4阶。
为了减少订单,我试着删除
我的问题是我不能用zp2tf (这里的官方文件)从零极点形式转换成tf形式.
我跟踪了文档并输入了我的p、z和k值:
z = [-100000]';
p = roots([0.005 5.00010060 0.661600001 61.01102010 2.1101 10]);
k = 0.0200;
[b,a] = zp2tf(z,p,k)我希望看到我最初的分子和分母,但是它们的值是完全不同的:

为什么我没有得到最初的传递函数中的极点和零点?
发布于 2018-11-07 18:24:23
你实际上得到了同样的传递函数。只是分子和分母乘以200。取200作为常见的分子和分母,你就会看到同样的传递函数。
>> [bnew,anew] = zp2tf(z,p,k)
bnew =
1.0e+03 *
0.0000 2.0000 0 0 0 0
anew =
1.0e+04 *
0.0001 0.1000 0.0132 1.2202 0.0422 0.2000
>> bnew/200
ans =
0.0001 10.0000 0 0 0 0
>> anew/200
ans =
0.0050 5.0001 0.6616 61.0110 2.1101 10.0000https://stackoverflow.com/questions/53195059
复制相似问题