Extra zeros added to a TF by zero()
Ältere Kommentare anzeigen
I'm seeing extra zeros added to a TF by zero().
Here's a state space TF, in zpk form (for compactness, as the SS form is large with 17 states):
>> zpk(testTf)
ans =
-1.9848e-09 (s+1994) (s^2 + 320s + 2.527e05)
Continuous-time zero/pole/gain model.
This looks like a 3-zero system.
Now I check zeros on the zpk() system, and it's as expected:
>> zero(zpk(testTf))
ans =
-1.9941e+03 + 0.0000e+00i
-1.6000e+02 + 4.7651e+02i
-1.6000e+02 - 4.7651e+02i
But if I check zeros on the system itself without zpk(), I get 7 zeros:
>> zero(gff_pre)
ans =
-1.6000e+02 + 4.7651e+02i
-1.6000e+02 - 4.7651e+02i
-1.9941e+03 + 0.0000e+00i
-6.4648e+02 + 0.0000e+00i
-7.9341e+02 + 0.0000e+00i
-1.9941e+03 + 0.0000e+00i
-5.3978e+03 + 0.0000e+00i
Why? What might be occurring here?
Is zpk() removing zeros from the original state space TF? If so, why?
If not, is zpk() not an accurate representation of the system? To my understanding, all SS can be turned into TF (not including delays, which testTf doesn't have)
2 Kommentare
Jon
am 11 Mai 2023
Maybe pole zero cancellations, and the cancelled zeros are not displayed in the more compact form. Please attach a .mat file with your systems defined so others can try to replicate and explain further.
Akzeptierte Antwort
Weitere Antworten (1)
LeoAiE
am 11 Mai 2023
It's possible that when you convert the state-space model to a transfer function, some additional zeros might be introduced due to numerical inaccuracies or the way MATLAB handles the conversion internally. These extra zeros might be very close to some poles, making them practically insignificant when analyzing the system behavior.
When you convert the state-space model to a zero-pole-gain (zpk) model, MATLAB might be simplifying the model by canceling out those insignificant zeros and poles. This would explain why you see fewer zeros in the zpk model compared to the original state-space model.
To check if this is the case, you can compare the poles of the original state-space model with the poles of the zpk model:
poles_ss = pole(testTf);
poles_zpk = pole(zpk(testTf));
If some of the extra zeros in the original state-space model are very close to the poles, it's likely that MATLAB is canceling them out during the conversion to zpk.
In general, zpk representations are useful for analyzing the behavior of a system, but they might not capture all the numerical details of the original state-space model. The difference between the two representations might not be significant in practice, depending on the specific system and the context in which it's being used.
Kategorien
Mehr zu Time and Frequency Domain Analysis finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!