Effacer les filtres
Effacer les filtres

Add reference line to a Bode Plot

46 vues (au cours des 30 derniers jours)
Leandro  Cavalheiro
Leandro Cavalheiro le 21 Déc 2017
Commenté : am le 25 Fév 2021
Greetings!
I used the command
h = bodeplot(Gol,{0.1 0.5});
to plot Bode diagrams (Magnitude x Frequency and Phase Angle x Frequency) to analyze the stability of the closed-loop system. Hence, I need to draw a horizontal reference line at y = 1 on the first graph (Mag. x Freq.) so as to find out if my system stable or not.
How do I do that? Were it a simple plot, I'd use refline but it doesn't work for the bodeplot function, since it generates two plots (like subplot(2,1,1) and subplot(2,1,2)). Thank you.

Réponse acceptée

Star Strider
Star Strider le 21 Déc 2017
It is not worthwhile to attempt to do anything with the plots that bode and most — if not all — of the other Control System Toolbox plots. They do not allow modifications.
Instead, get the outputs from the bode function:
[mag,phase,wout] = bode(sys);
and plot them using subplot. Remember to use the squeeze command to remove singleton dimensions from the ‘mag’ and ‘phase’ results for simple models.
  2 commentaires
Leandro  Cavalheiro
Leandro Cavalheiro le 23 Déc 2017
Thanks. I'll try that.
Star Strider
Star Strider le 24 Déc 2017
It will work.
Remember to use semilogx for the subplots, and 20*log10(mag) for the y-axis of the magnitude plot.

Connectez-vous pour commenter.

Plus de réponses (1)

Rick Giovanini
Rick Giovanini le 28 Mar 2018
Modifié(e) : Rick Giovanini le 28 Mar 2018
check this out. Bodes want LTI - Linear Time invariant objects. You can plot many bode's on one plot if you have many LTI objects. What's the LTI transfer function of a horizontal line? Well it's simply
k*tf([1],[1]), where k is the y value I desire. In other works, k*(1/1), or k. We know it's just k that we want, but matlab wants a transfer function.
so, if I want my bode with some horizontal lines, simply do...
bode(mybode, yourbode, NowIfWe_reTalkingBodes_YouGotAPerfectOneSoPutItOnMe, k*tf([1],[1]), r*tf([1],[1]), s*tf([1],[1]))
which simply produces some bodes and lines at y=k, r, and s.
First ever post. Like if it helps you.
  2 commentaires
Mirza  Sajjad Hussain
Mirza Sajjad Hussain le 14 Mar 2019
very thanks
am
am le 25 Fév 2021
Lol @Rick Giovanini, thanks it helped!

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