MATLAB: How to have the BODE command in the Control System Toolbox plot output in Hertz (Hz) rather than rad/sec

bodecontrolControl System Toolboxdbhzplotpreferencesrad/secsystemtoolbox

I would like to have the BODE command in the Control System Toolbox plot output in Hertz (Hz) rather than rad/sec.

Best Answer

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.