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

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.

 채택된 답변

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

Thanks. Yes, 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. So there should be two additional zeros at z=-1, though now the result of MATLAB has only one. Why?
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.
I see now, thank you so much. I've noticed the discuss in the textbook.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Mohamed Elshami
Mohamed Elshami 2025년 3월 17일

0 개 추천

Review the textbook and make sure that (two) is the number of ploes or zeros.

댓글 수: 1

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?

댓글을 달려면 로그인하십시오.

카테고리

제품

릴리스

R2020a

질문:

2025년 3월 17일

댓글:

2025년 4월 6일

Community Treasure Hunt

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

Start Hunting!

Translated by