首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将零极点增益转换为传递函数(zp2tf)不像预期的那样工作。

将零极点增益转换为传递函数(zp2tf)不像预期的那样工作。
EN

Stack Overflow用户
提问于 2018-11-07 17:54:05
回答 1查看 1.3K关注 0票数 0

我想把一个传递函数转换成零极点增益,然后返回到传递函数形式。

tf -> tf2zp -> zp2tf -> tf

据我所知,zp2tf的输出应该返回原来的传递函数。然而,我似乎无法让这件事奏效。

我有一个表格的5阶传递函数:

我继续寻找这个传递函数的零点和极点,看看哪一个极点可以被移除,以减少顺序。由于该模型由电气部分和机械部分组成,因此电气部分的时间常数与机械时间常数相比非常小,因此可以用增益代替电气系统,得到一个等效的四阶系统。

为此,我使用了MathWorks上可用的这段代码,上面的5阶TF:

代码语言:javascript
复制
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值:

代码语言:javascript
复制
z = [-100000]';
p = roots([0.005 5.00010060 0.661600001 61.01102010 2.1101 10]);
k = 0.0200;
[b,a] = zp2tf(z,p,k)

我希望看到我最初的分子和分母,但是它们的值是完全不同的:

为什么我没有得到最初的传递函数中的极点和零点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-07 18:24:23

你实际上得到了同样的传递函数。只是分子和分母乘以200。取200作为常见的分子和分母,你就会看到同样的传递函数。

代码语言:javascript
复制
>> [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.0000
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53195059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档