How to use exp^s for a transfer function in matlab
5 次查看(过去 30 天)
显示 更早的评论
I have a equation
- Gd= exp(-1.5*s*Ts);
with s = tf('s');
but whenever I use it in any other transfer function later, it changes the function to continious time state-space model.
For example if I run Gx1= Gd / ( (s^2) + (s*Gd) + 1 ) , Gx1 will become continious time state-space model rather than continious time transfer function model. I tried ss2tf matlab tool but it's also not working.
3 个评论
VBBV
2024-3-19
@Syed Muhammad Mujtaba, for linear ,models there is no such issue , however, if the model is non-linear such as in your case, it needs to be converted to linear approximation
Ts = 1/2000;
s = tf('s');
Gd = exp(-1.5*s*Ts);
G = (Gd / ( (s^2) + (s) + 1 )) % linear model
G = (Gd / ( (s^2) + (s*Gd) + 1 )) % non-linear model
回答(1 个)
Paul
2024-3-19
Models with internal delays are implemented in state space form.
Ts = 1/2000;
s = tf('s');
Gd = exp(-1.5*s*Ts);
With Gd only in the numerator, the system has a simple delay between the input and output, which Matlab places on the Output. I guess that's the default if you don't specify otherwise.
h1 = Gd/(s^2 + s + 1)
h1.OutputDelay
Here, because Gd is applied to one term in the demominator, the model essentially has an additional delay on one of the feedback loops, and such models are always implemented in state space form.
h2 = Gd/(s^2 + s*Gd + 1)
Attempting to convert to tf throws an error.
tf(h2)
Check the doc pages for "models with internal delays" (or something like that) for more details.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Model Order Reduction 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!