Error in exponential transfer function
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponses (2)
John
le 7 Fév 2020
1 commentaire
Walter Roberson
le 7 Fév 2020
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
le 7 Fév 2020
3 commentaires
Walter Roberson
le 7 Fév 2020
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.
Voir également
Catégories
En savoir plus sur Least Squares dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!