How to Numerical Nyquist Plot?

5 ビュー (過去 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 Center および File ExchangeControl System Toolbox についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by