# multiple bode plots on same graph

311 vues (au cours des 30 derniers jours)
aaa le 14 Déc 2011
Hi,
Does anyone know how to plot multiple bode plots using the "bode" function? I know that the easiest way to do this would be to use
bode(sys1, sys2)
but this assumes that both of these functions are written in the "tf" form.
The problem i am having is that I would like to plot an array of data, with a 'tf' data on the same plot. However, I can't quite get it to work the way i want.
So what i want is to plot the bode plot first
bode(A)
and then be able to plot the magnitude and phase in the corresponding bode figure which uses the code
semilogx(f, data(:,1))
semilogx(f,data(:,2))
for the magnitude.
has anyone done this before?
tia
##### 3 commentairesAfficher 1 commentaire plus ancienMasquer 1 commentaire plus ancien
Janamejaya le 30 Juil 2012
I was able to solve the problem, a Prof. at my university helped me.
Here's the code.
semilogx([10 100 200 300 400 500 600 700 800 900 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 ], [2 2.3 13.3 26.3 -6.46 -11.7 -15.6 -18.8 -20.9 -23.4 -25.2 -37.9 -44.8 -50 -53.9 -57 -59.6 -62 -64 -65 ]);
hold on
num=[0 1];
den=[0.000000495 0.000033 1];
system1=tf(num,den);
bode(system1)
best wishes
janmay
Janamejaya le 30 Juil 2012

Connectez-vous pour commenter.

### Réponses (5)

a a le 9 Nov 2015
Modifié(e) : a a le 9 Nov 2015
It's working for me:
figure(1);
hold on;
bode(W1); %here you need a system or transfer function or space-state model, etc..
bode(W2);
hold off;
##### 0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

Paulo Silva le 14 Déc 2011
Maybe something with hold on?!
g = tf([1 0.1 7.5],[1 0.12 9 0 0]);
bode(g)
hold on
g = tf([1],[1 0.12 9 0 0]);
bode(g)
##### 0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

aaa le 14 Déc 2011
unfortunately it is not that simple. my code looks more like
g = tf([1 0.1 7.5],[1 0.12 9 0 0]);
bode(g)
hold on
semilogx(f, data)
the way you have done it assumes both plots are using 'tf'm which could also be plotted just with
bode(g1,g2)
##### 1 commentaireAfficher -1 commentaires plus anciensMasquer -1 commentaires plus anciens
Patricia Darling le 1 Mar 2016
I have the same question, none of these answers seem to address the issue of having two different types of data sets on the same bode plot. Did you ever resolve this?

Connectez-vous pour commenter.

Craig le 16 Déc 2011
You can create an frd object from your data and then plot it like any other LTI object.
[ResponseData,Frequencies]=freqresp(5*tf(1,[1,1,1])); % Example Data
sys1 = tf(1,[1,1]);
sys2 = frd(ResponseData,Frequencies)
bode(sys1,sys2)
##### 0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

mjcStudent le 3 Avr 2019
For my assignment, I had to plot the same graph with different values of one parameter. I wrote this:
for N = 1: .5 : 3 % 6 values
Jl = .002*N; % the parameter to be changed
% skipping most of code
if N == 1 % only create one figure window on the first iteration
figure
hold on % only turn on 'hold' on the first iteration
end % end if
bode(sys); % plot output
grid
title("Stiffness: MA controller");
end % end for loop
hold off
Produces the following output:
##### 0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

### Catégories

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

### Community Treasure Hunt

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

Start Hunting!

Translated by