how to find bode plot,phase magnitude plot and template in control system?

7 vues (au cours des 30 derniers jours)
nelson
nelson le 10 Juil 2017
Commenté : Star Strider le 13 Juil 2017
z=1:0.5:10; a=1:0.5:5; num=kron(z,ones(1,length(a))); i=1:length(a); deno=zeros(9,3); deno(i,1)=1; deno(i,2)=a(i); den=repmat(deno,length(z),1); n=numel(num); for m=1:n sys(m)=tf(num(m),den(m,:)); end
  1 commentaire
Anita pawar
Anita pawar le 11 Juil 2017
In the above solution which u have given for phase magnitude plot is it for 171 transfer functions or for one transfer function?

Connectez-vous pour commenter.

Réponse acceptée

Star Strider
Star Strider le 10 Juil 2017
This works, although you will have to plot 171 figures to see each of them with any detail. (You would have to have a very large monitor to see them all as the bode function plots them, since it plots an array of (2x171) subplots in one figure.)
The Code
[mag,phs,wout] = bode(sys);
Magnitude = squeeze(mag);
Phase = squeeze(phs);
figure(1)
subplot(2,1,1)
plot(wout,20*log10(Magnitude(1,:)))
title('Magnitude (dB)')
grid
subplot(2,1,2)
plot(wout,Phase(1,:))
title('Phase (°)')
grid
The ‘template’ is a Simulink function you will have to do yourself, since you have to specify how you want it.
  1 commentaire
Star Strider
Star Strider le 11 Juil 2017
‘In the above solution which u have given for phase magnitude plot is it for 171 transfer functions or for one transfer function?’
The code is for all of them. It plots only one, because letting the bode function plot them produces an unreadable collection of subplots. To get any useful information from the plots, you will have to plot them one-by-one. Plot as many as you like.
You can do that in a loop:
for k1 = 1:171
figure(k1)
subplot(2,1,1)
plot(wout,20*log10(Magnitude(k1,:)))
title('Magnitude (dB)')
grid
subplot(2,1,2)
plot(wout,Phase(k1,:))
title('Phase (°)')
grid
end

Connectez-vous pour commenter.

Plus de réponses (1)

nelson
nelson le 13 Juil 2017
while running this solution,i got this error "Error in dcmotor (line 18)
plot(w,20*log10(Magnitude(k1,:)))"
close all; clear all; clc tic; w=[.001 .0036 .0126 .0464 .1668 .5995 2.1544 7.7426 27.8256 100 200]; for k=1:0.5:10 for a=1:0.5:5 num=k; den=[1 a 0]; sys=tf(num,den); end end bode(sys,w); grid on for k1 = 1:171 figure(k1) subplot(2,1,1) plot(w,20*log10(Magnitude(k1,:))) title('Magnitude (dB)') grid subplot(2,1,2) plot(w,Phase(k1,:)) title('Phase (°)') grid end time=toc
  1 commentaire
Star Strider
Star Strider le 13 Juil 2017
You have to call the bode function with outputs:
[mag,phs,wout] = bode(sys,w);
Magnitude = squeeze(mag);
Phase = squeeze(phs);
I have no idea what you are doing with your code.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Plot Customization dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by