Bode Diagram

13 views (last 30 days)
Amir
Amir on 27 Apr 2011
Commented: Walter Roberson on 15 Oct 2024
When I plot a bode diagram from a FRD sys (obtained by a measurement data), I encounter phases beyond [-180,180]; actually, their order is about 2000 degrees! What should I do in order to have them inside [-180,180] degree?

Accepted Answer

Arkadiy Turevskiy
Arkadiy Turevskiy on 27 Apr 2011
You need to use bodeoptions command and set PhaseWrapping to on. Here is an example showing how to do it:
>>s=tf('s'); %define Laplace variable
>>freq=logspace(-1,2,1000); %define frequency vector
>>sys=1/(s^3+2*s^2+3*s+1); %some tf with phase <-180
>>bode(sys,freq) %phase is not within -180:180
>>p=bodeoptions
>>p.PhaseWrapping='on'
>>bode(sys,freq,p) %phase is wrapped inside -180:180
HTH, Arkadiy
  1 Comment
Amir
Amir on 28 Apr 2011
Thank you very much. It worked for me :)

Sign in to comment.

More Answers (2)

Benjamin Hoepfner
Benjamin Hoepfner on 29 Jun 2022
Hi,
i'm using version 2021a and i have a similar problem but the previous answer doesn't work in my case. I need the values of the bode(sys) function for further calculations or external data storage. But the phase wrap obviously doesn't work in this case.
Here is my Code:
%same system from the previous answer
s=tf('s');
freq=logspace(-1,2,1000);
sys=1/(s^3+2*s^2+3*s+1);
[M1,P1,w1] = bode(sys,freq); %saving the magnitude,phase and frequency from the system via bode(sys)
X1=[]; %saving the datas in an extra variable
X1(:,1)=w1;
X1(:,2)=M1;
X1(:,3)=P1;
p=bodeoptions;
p.PhaseWrapping='on';
[M2,P2,w2] = bode(sys,freq,p); %same step as before but with the phase wrap option from bodeoptions
X2=[];
X2(:,1)=w2;
X2(:,2)=M2;
X2(:,3)=P2;
figure(1)
semilogx(X1(:,1),X1(:,3),X2(:,1),X2(:,3)) %plotting phases from X1 and X2 over frequency
legend %two curves with same datas..
Is there anybody out there how can help me with this or can give me an explanation for this?
Best regards!
Ben

SRIMATHI
SRIMATHI on 15 Oct 2024
Edited: Walter Roberson on 15 Oct 2024
same system from the previous answer
s=tf('s');
freq=logspace(-1,2,1000);
sys=1/(s^3+2*s^2+3*s+1);
[M1,P1,w1] = bode(sys,freq);
X1=[];
X1(:,1)=w1;
X1(:,2)=M1;
X1(:,3)=P1;
if true
% code
end
p=bodeoptions;
p.PhaseWrapping='on';
[M2,P2,w2] = bode(sys,freq,p);
X2=[];
X2(:,1)=W2;
X2(:,2)=M2;
X2(:,3)=P2;
figure(1)
semilogx(X1(:,1),X1(:,3),X2(:,1),X2(:,3)) ;
  1 Comment
Walter Roberson
Walter Roberson on 15 Oct 2024
W2 is undefined.
MATLAB is case-sensitive. w2 is not the same as W2

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!