Error in exponential transfer function
4 ビュー (過去 30 日間)
古いコメントを表示
I'm having difficulty implementing certain transfer functions in non-state-space form:
Eg
1 - exp(-s)
or
exp(-s) + 1
Basically, there is a complication with a function e^-s that is NOT of the standard delay form TF*e^-s (<-- standard delay form of a transfer function TF).
Here is an example:
s = tf('s')
tf = exp(-s)
This returns a transfer function, as expected:
tf =
exp(-1*s) * (1)
Continuous-time transfer function.
But this one is unexpected:
tf = exp(-s) + 1
This returns state space:
tf =
D =
u1
y1 2
(values computed with all internal delays set to zero)
Internal delays (seconds): 1
Continuous-time state-space model.
Why does the addition or subtraction turn into state space?
It should be realizable, since exp() + 1 can be represented by a physical sum of these elements in a block diagram.
I'm unable to force this SS back to a transfer functions -- I'd like to place this into a loop with other transfer functions -- so I'm guessing this forcing into State Space is something internal to Matlab.
0 件のコメント
回答 (2 件)
John
2020 年 2 月 7 日
1 件のコメント
Walter Roberson
2020 年 2 月 7 日
It should be realizable, since exp() + 1 can be represented by a physical sum of these elements in a block diagram
What does that have to do with whether you can create a transfer function using the numerator / denominator representation?
Suppose that I have data that has a nice exponential fit, such as 5*exp(-3*x). Now add 1 to the values and ask for an exponential fit of the result. You will not get a good fit, because the exponential fit process is only for data of the form A*exp(-B*x) with no constants added. We look at it and say "Duh just add one" but mathematically it is a very different situation. In the case without the constant y = a*exp(b*x) can undergo a simple log transform, log(y) = log(a) + b*x and then you just do a linear fitting. But if you try the same technique on a*exp(b*x)+c you have a mess and log of that cannot be represented in just linear terms.
John
2020 年 2 月 7 日
3 件のコメント
Walter Roberson
2020 年 2 月 7 日
Remember you did not multiply by the delay, you added the delay. The function just isn't designed to represent the sum of any arbitrary number of Dirac delta functions in the time domain. The state space representation is designed for that purpose.
参考
カテゴリ
Help Center および File Exchange で Least Squares についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!