How can I set linewidth directly in bode command?

364 views (last 30 days)
I can draw a bode plot as below
sys = tf(4,[1 0.5 4]);
figure(1), bode(sys), grid on;
Now, I would like to change some options in the Bode plot.
I can set the options through 'bodeoptions' as below.
sys = tf(4,[1 0.5 4]);
options = bodeoptions;
options.FreqUnits = 'Hz';
options.Title.FontSize = 14;
options.XLabel.FontSize = 14;
options.YLabel.FontSize = 14;
options.TickLabel.FontSize = 14;
figure(2), bode(sys, options), grid on;
But I can't find the option to set the linewidth of the bode plot.
How can I do that?

Answers (3)

Birdman
Birdman on 25 Mar 2020
You can try semilogx. See the following code:
sys=tf(4,[1 0.5 4]);
[mag,phase,wout] = bode(sys);
Mag=20*log10(mag(:));Phase=phase(:);
figure(1);semilogx(wout,Mag,'LineWidth',5);grid on;
figure(2);semilogx(wout,Phase,'LineWidth',1);grid on;
  1 Comment
byungkeuk cho
byungkeuk cho on 25 Mar 2020
Thank you for your answer.
I thought of this way but I wanted to know if I can do the same thing with bode options.
Really appreciate it though.

Sign in to comment.


Star Strider
Star Strider on 25 Mar 2020
It is possible to do this without getting the outputs from bode and doing separate plots, however it requires some fairly extensive ‘handle diving’:
sys = tf(4,[1 0.5 4]);
figure(1)
bode(sys)
grid
Fh = gcf; % Handle To Current Figure
Kids = Fh.Children; % Children
AxAll = findobj(Kids,'Type','Axes'); % Handles To Axes
Ax1 = AxAll(1); % First Set Of Axes
LinesAx1 = findobj(Ax1,'Type','Line'); % Handle To Lines
LinesAx1(2).LineWidth = 5; % Set ‘LineWidth’
Ax2 = AxAll(2); % Second Set Of Axes
LinesAx2 = findobj(Ax2,'Type','Line'); % Handle To Lines
LinesAx2(2).LineWidth = 5; % Set ‘LineWidth’
Experiment to get different results.
  2 Comments
byungkeuk cho
byungkeuk cho on 25 Mar 2020
Thank you for your answer.
It looks a bit complicated as you said.
Anyway, I will keep it as another option.
Star Strider
Star Strider on 26 Mar 2020
My pleasure.
This is the only way I am aware of to change the linewidths (or any other options) in the Control System Toolbox and System Identification Toolbox graphics functions.

Sign in to comment.


Marcelo Moraes
Marcelo Moraes on 17 Apr 2023
fig = gcf;
obj = findobj(fig,'Type','hggroup');
for idx = 1:numel(obj)
for jdx = 1:numel(obj(idx).Children)
obj(idx).Children(jdx).LineWidth = 2;
end
end

Categories

Find more on Get Started with Control System Toolbox in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!