I'm trying to convert a system from c2d and then from d2c but the results are not the same. Why? There is no delay!

1 vue (au cours des 30 derniers jours)
My system is: s^2/s^3+1 My code is:
num=[1 0 0];
den=[1 0 0 1];
sys=tf(num,den)
sysd=c2d(sys,0.3)
sys2=d2c(sysd)
Why is the "sys" different from the "sys2"? Why a system like this 1/(s+1) gives correct results?
num=[1];
den=[1 1];
sys=tf(num,den)
sysd=c2d(sys,0.3)
sys2=d2c(sysd)

Réponse acceptée

zohar
zohar le 23 Juin 2011
Hi sadel
I execute your code and I got :
Transfer function:
s^2
-------
s^3 + 1
Transfer function:
0.2997 z^2 - 0.6 z + 0.3003
-----------------------------
z^3 - 2.987 z^2 + 3.014 z - 1
Sampling time: 0.3
Transfer function:
s^2 - 6.217e-015 s - 1.066e-014
---------------------------------------
s^3 - 6.106e-015 s^2 - 1.377e-014 s + 1
1.377e-014 is very close to zero !
Isn't it enough ?
  3 commentaires
Walter Roberson
Walter Roberson le 23 Juin 2011
Polynomial fitting almost always has round-off error.
sadel
sadel le 23 Juin 2011
There is no way I to fix it? Even if I take the coefficients and round them?

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Linear Model Identification 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!

Translated by