One zero is missing in the result of c2d function uses 'matche'

1 visualizzazione (ultimi 30 giorni)
Commands and results are as follows
sysd=c2d(tf(11,[1,1,0]),.1,'matched')
sysd =
0.05237 z + 0.05237
----------------------
z^2 - 1.905 z + 0.9048
Sample time: 0.1 seconds
Discrete-time transfer function.
However, according to the textbook, there seems to be two zeros. What's the problem? Thanks.

Risposta accettata

Paul
Paul il 17 Mar 2025
sysc = tf(11,[1,1,0])
sysc = 11 ------- s^2 + s Continuous-time transfer function.
sysd=c2d(sysc,.1,'matched');
zpk(sysd)
ans = 0.052339 (z+1) ---------------- (z-1) (z-0.9048) Sample time: 0.1 seconds Discrete-time zero/pole/gain model.
Is the addtional zero in the textbook also at z = -1?
  3 Commenti
Paul
Paul il 2 Apr 2025
The continuous time transfer function is
sysc = tf(11,[1,1,0])
sysc = 11 ------- s^2 + s Continuous-time transfer function.
The relative order between the denominator and numerator is 2, which means that sysc as two zeros at infinity, which govern the asymptotic behavior of the frequency response as frequency gets large. Because the relative order is two, the gain should roll off at -40 dB per decade and the phase should approach -180 degrees.
In discrete-time, the frequency "axis", at least the part we care about for this problem, is the upper half of the unit circle. In that sense, the point z = -1 represents the highest frequency. If we want the discrete-time approximation to have similar high frequency characteristics as the continuous-time system, the discrete-time system should have as many zeros at z = -1 as the continuous-time system has at omega = inf. So, after the poles and zeros of sysc are mapped through z = exp(s*T) we manually add 2 additional zeros at z = -1, which I guess is what is shown in the textbook example. This approach will always yield a discrete-time approximation with relative order of zero, i.e., same number of finite poles and zeros. For such systems, the current output y[k] depends on the current input u[k], which might not be implementable in a phyical processor where a delay is incurred. In this case, we remove one of the zeros at z=-1 to make the discrete-time system implementable, which appears to be the convention used by c2d.
I'm quite certain this issue is discussed in that textbook.
Result from c2d
T = 0.1;
sysd=c2d(sysc,T,'matched');
Add a zero at z = -1, and divide by 2 to maintain the same gain at z = 1.
sysd1 = sysd*(tf('z',T)+1)/2;
Compare
w = logspace(-2,pi,1000)/T;
w(end) = [];
[mc,pc] = bode(sysc,w);
[md,pd] = bode(sysd,w);
[md1,pd1] = bode(sysd1,w);
subplot(211);
semilogx(w,db([mc(:),md(:),md1(:)]));,grid
ylim([-100,50])
subplot(212);
semilogx(w,[pc(:),pd(:),pd1(:)]);grid
Adding the zero at z = -1 caused a bit of distortion on the gain, but recovered the phase quite nicely.
Ruijun Dong
Ruijun Dong il 6 Apr 2025
I see now, thank you so much. I've noticed the discuss in the textbook.

Accedi per commentare.

Più risposte (1)

Mohamed Elshami
Mohamed Elshami il 17 Mar 2025
Review the textbook and make sure that (two) is the number of ploes or zeros.
  1 Commento
Ruijun Dong
Ruijun Dong il 2 Apr 2025
Thanks. According to my textbook, Digital Control of Dynamic Systems (3rd Edition), by Gene F.Franklin, J.David Powell, Michael Workman, the two zeros of H(s) at s=infinite are mapped in H(z) to the point z=-1. Now the result of MATLAB has only one additional zero. Why?

Accedi per commentare.

Prodotti


Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by