How can I have the BODE command in the Control System Toolbox plot output in Hertz (Hz) rather than rad/sec?

3 views (last 30 days)

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 1 Mar 2019
The documentation has been updated for Release 2008b (R2008b). For previous product releases, read below:
There is no built in way to create bode plots with the frequency in Hz.
To work around this limitation you can use the BODE command to return the magnitude phase and frequency response of the system which can be converted to Hz and then plotted. For example you can use the following code:
% Create and LTI system
g = tf([1 0.1 7.5],[1 0.12 9 0 0]);
% Call the BODE function with output arguments
[MAG,PHASE,W] = bode(g);
% Convert the frequency from rad/s to Hz
F = W/(2*pi);
% Convert the magnitude from degrees to decibels
DMAG = 20 * log10(MAG);
% Create a figure with two plots, the magnitude and phase as a function of
% frequency
subplot(2,1,1);
semilogx(F,reshape(DMAG,size(DMAG,3),1));
subplot(2,1,2);
semilogx(F,reshape(PHASE,size(PHASE,3),1));
Note that you must use the reshape command because the magnitude and the phase for the bode plot are being returned as a 3-D matrix of values which corresponds to Ny-by-Nu-by-length(W) arrays.
See the documentation on the BODE function for more information.
You can use the LTI viewer that ships with Control System Toolbox to set your default axis settings. This is done in the LTI Viewer using the command
ltiview
and then selecting "Toolbox Preferences" from the File pulldown menu. There you can change the default axis settings from Hz to rad/sec and vice versa.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!