Dear all
I found a bug of matlab. when I use the matlab function "pzmap" to draw the poles and zeros, these poles should be located on the unit circle, however, in the matlab, they are located outside of the unit circle. Please have a look at the code below: the poles should be:p1=exp(-jwg*Ts), p2=exp(jwg*Ts). However, when we use "pzmap" to draw it, it is outside of the unit circle. Does anyone know how to solve it?
%%the matlab function is as follows: %% Ts=1e-4; wg=2*pi*50; z=tf('z'); Gc=(z^2-1)/(z^2-2*z*cos(wg*Ts)+1); pzmap(Gc); %%

답변 (2개)

Birdman
Birdman 2018년 4월 5일

0 개 추천

Do not be bothered by that. You know that the magnitude of the pole should give you 1:
0.9995^2+0.0314^2=1
The reason it stands outside has something to do with your sampling time. If you check the Bode plot of the system, you will see that even sampling with 10kHz is not enough since the magnitude at that frequency is still high comparing to low frequencies. Therefore choose your sampling time as high as possible. The poles will stand closer to the unit circle, but will not be exactly on the unit circle. For instance increase the sampling time to 1e-8 and observe the Bode plot again.
bode(Gc)
Hope this helps.

댓글 수: 8

JINGHANG LU
JINGHANG LU 2018년 4월 5일
So high frequency is not acceptable. As in the real system, such as DSP, the sampling frequency is maximized at 50kHZ for implementation of power electronic converter control.
Birdman
Birdman 2018년 4월 5일
Well, your system outputs your input by increasing its magnitude at almost every frequency, this is what I observed from the Bode plot. Then, the best thing to do is to sample the system as fastest as you can and this will make your poles come closee to the unit circle but there will always be a small error due to the fact that your system shows high magnitude characteristics.
JINGHANG LU
JINGHANG LU 2018년 4월 5일
As you can see my figure in the following answer, matlab shows the poles are at:1+0.0314i, and 1-0.0314i, instead of 0.9995 + 0.0314i and 0.9995 - 0.0314i
Birdman
Birdman 2018년 4월 5일
There must have been some kind of internal rounding. If you find the roots of your denominator
roots([1 -2*cos(2*pi*50*0.0001) 1]
You will find what I told you.
JINGHANG LU
JINGHANG LU 2018년 4월 5일
but this rounding is not acceptable, as it depends if the system is stable or not stable
Birdman
Birdman 2018년 4월 5일
Take the magnitude of your pole, you will see that it is 1.
JINGHANG LU
JINGHANG LU 2018년 4월 5일
yes, it is 1, but it shows the wrong value of the poles with pzmap figure in Matlab. So it will misguide you when you analyze the system 's stability with pzmap function.
Birdman
Birdman 2018년 4월 5일
But conversion fron continuous to discrete always contains this kind of tradeoffs. Therefore my suggestion is to make analysis via Bode plots.

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

JINGHANG LU
JINGHANG LU 2018년 4월 5일

0 개 추천

In addition, see the pole's value from matlab. it is 1+0.0314i, and 1-0.0314i

카테고리

도움말 센터File Exchange에서 MATLAB에 대해 자세히 알아보기

태그

질문:

2018년 4월 4일

댓글:

2018년 4월 5일

Community Treasure Hunt

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

Start Hunting!

Translated by