Я хочу преобразовать передаточную функцию в усиление нулевого полюса, а затем обратно в форму передаточной функции.
tf
-> tf2zp -> zp2tf -> tf
Как я понимаю, вывод zp2tf
должен возвращать исходную передаточную функцию. Однако я не могу заставить это работать.
У меня есть передаточная функция 5-го порядка вида:
![enter image description here](https://i.stack.imgur.com/cx76d.jpg)
Я приступил к поиску нулей и полюсов для этой передаточной функции, чтобы увидеть, какой полюс можно удалить, чтобы уменьшить порядок. Поскольку эта модель состоит из электрической и механической частей, постоянная времени для электрической части очень мала по сравнению с механическими постоянными времени, и поэтому мы можем заменить электрическую систему усилением и получить эквивалентную систему 4-го порядка ,
Для этого я использовал этот фрагмент кода, доступный на MathWorks , с TF 5-го порядка выше:
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
![enter image description here](https://i.stack.imgur.com/AKcGk.jpg)
и эквивалентная PZ-карта:
![enter image description here](https://i.stack.imgur.com/xE4CB.jpg)
Приведенные выше результаты показывают полюс, связанный с электрической цепью, который находится далеко слева. Это можно убрать, уменьшив тем самым порядок передаточной функции с 5-го по 4-й.
Чтобы уменьшить заказ, я попытался удалить
Моя проблема в том, что я не могу преобразовать форму с нулевого полюса в форму tf, используя zp2tf
( официальные документы здесь ).
Я проследовал за документами и ввел значения 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)
Я ожидал увидеть свой исходный числитель и знаменатель, однако значения совершенно разные:
![enter image description here](https://i.stack.imgur.com/d6DA9.jpg)
Почему я не получаю полюсы и нули, с которых я начал в исходной функции передачи?