How to Numerical Nyquist Plot?

조회 수: 6 (최근 30일)
Rafael Sanchez Souza
Rafael Sanchez Souza 2015년 11월 1일
편집: Rafael Sanchez Souza 2015년 11월 10일
Hello there! I'm trying to make a numerical nyquist plot of the following system
a = [-1 0; 0 -1] b = [1 99; 0 1] c = [1 0; 0 1] d = [0 0 ; 0 0]
The correct plot is achieved analytically by: phi = -1 + det[I+G(S)] = (2s +3)/(s+1)^2
In Matlab:
s = tf('s')
phi = (2s +3)/(s+1).^2
nyquist(phi)
The thing is, I want to automate this operations, once Matlab doesn't work very well with symbolic variables, I need to do this numerically.
1. The first way I tried this was(actually, this was an analytic solution):
nyquist(tf(ss(a,b,c,d)))
but this gives me a graph I cannot understand and tell why it's wrong:
Why is it wrong? What is happening there?
2. I know I must find the Characteristic polynomial and I believe I must plot all the values of F(s) for s being a contour that encompasses the right-half of the complex plane. SO I tried something like this:
w = logspace(0,10,1000) for k=1:length(w) G = (2*i+3)/((w(k)*i+1).^2) plot(real(G),imag(G),'bo') hold on end
And got something REALLY different from what I wanted:
Please, someone help me!! : )

채택된 답변

Stefan Raab
Stefan Raab 2015년 11월 2일
Hello,
actually the following code doesn't work:
s = tf('s')
phi = (2s +3)/(s+1).^2
nyquist(phi)
I have to ask what you want to calculate with this: phi = -1 + det[I+G(S)] = (2s +3)/(s+1)^2 ? I'm not quite sure what you want to do there. Now, to your questions:
1) As your system is MIMO (Multiple Input Multiple Output) because of the dimensions of B and C, your transfer function is acutally a transfer matrix (which input to which output) according to: G(s) = C*(s* I- A)^(-1)* B . Therefore MATLAB plots all four transfer functions (see the labels: Input .. to Output ..).
tf(ss(a,b,c,d)) =
From input 1 to output...
1
1: -----
s + 1
2: 0
From input 2 to output...
99
1: -----
s + 1
1
2: -----
s + 1
2) In your code is a little mistake I think. You forgot the w(k) in your numerator: G = (2 * w(k) *i+3)/((w(k)*i+1).^2) . Beside this fact, your numerical nyquist plot for this transfer function should be fine, but it won't start from w = 0, as logspace starts from 10^0 = 1 (if you're wondering why your plot is not complete).
I hope I could help you, best regards,
Stefan
  댓글 수: 1
Rafael Sanchez Souza
Rafael Sanchez Souza 2015년 11월 10일
편집: Rafael Sanchez Souza 2015년 11월 10일
It worked! I added the w(k) : )
The other code didn't work because of syntax. There was a missing * between 2 and s. 2*s instead of 2s.
Thanks a lot,
Rafael

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Graphics Performance에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by