Azzera filtri
Azzera filtri

Add reference line to a Bode Plot

46 visualizzazioni (ultimi 30 giorni)
Leandro  Cavalheiro
Leandro Cavalheiro il 21 Dic 2017
Commentato: am il 25 Feb 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.

Risposta accettata

Star Strider
Star Strider il 21 Dic 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 Commenti
Leandro  Cavalheiro
Leandro Cavalheiro il 23 Dic 2017
Thanks. I'll try that.
Star Strider
Star Strider il 24 Dic 2017
It will work.
Remember to use semilogx for the subplots, and 20*log10(mag) for the y-axis of the magnitude plot.

Accedi per commentare.

Più risposte (1)

Rick Giovanini
Rick Giovanini il 28 Mar 2018
Modificato: Rick Giovanini il 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.

Community Treasure Hunt

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

Start Hunting!

Translated by