Building a transfer function.

Function I want to build is this:
Gp(s)
----------------------
1 + Gc(s)Gp(s)H(s)
1
Gp(s) = ---- Gc(s) = 0.8(s+12.5) H(s) = 1
s(s+10)
However, I can't seem to construct the transfer function due to Gp(s) being a fraction over itself.
My attempts at doing so do not result in the same answer as when I calculate it manually.
Thanks!

 采纳的回答

Hi Jason Gauthier,
I do not see any troubles in constructing the transfer function you wrote above:
Gp = tf(1, [1 10 0]);
Gc = 0.8*tf([1 12.5],1);
H = tf(1,1);
Gp/(1 + Gc*Gp*H)
Result:
>> ans =
s^2 + 10 s
--------------------------------
s^4 + 20.8 s^3 + 118 s^2 + 100 s
Continuous-time transfer function.
The result shows the transfer function without cancelling poles and zeros. If you do so, you come up with the same transfer function behaviour:
bodeplot(Gp/(1+Gc*Gp*H))
hold on
bodeplot(tf(1,[1 10.8 10]))
Kind regards,
Robert

2 个评论

Thanks. The example I had is using a method that includes conv(), and it wasn't clear. I was able to produce the same output by building the transfers function like this:
s= tf('s')
Gp = (1/(s*(s+10))
But, one of the requirements presented was to build a function that accepted the numerator and denominator as arguments, of Gp, and Gc. Your method was much better for this, because I can provide those and build the transfer function out of them directly.
Thanks for presenting me with (yet) another method to accomplish this!
Hi Jason Gauthier,
Thank you for your positive feedback. If you like my answer, please, vote for it by clicking on the "thumb up"-symbol.
In case it serves your needs and answers your question thoroughly, accept it.
Kind regards,
Robert

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 MATLAB 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by