How to change the default x-axis unit in a Bode diagram to Hertz?
Mostrar comentarios más antiguos
Rad/s is nice for mechanical people, but I'm an EE, and I much prefer Hertz. It should be something simple, but I can't find it in the help.
2 comentarios
dpb
el 22 de Sept. de 2018
Don't believe there is a way in the base routine; it's built entirely around rad/timeunits per the system object.
You could write a wrapper routine to convert frequency units and update the plot labels.
Chris
el 4 de En. de 2025
Actually you can, click on the plot tab from linearization manager, click plot properties, click units. Change to whatever units you need.
Respuesta aceptada
Más respuestas (3)
Tjeerd Ickenroth
el 31 de Mayo de 2023
5 votos
Type 'ltiview' in your command window. The Linear System Analyzer will pop up. Click on: File --> Toolbox Preferences... --> Units --> Frequency: Hz
3 comentarios
marcel hendrix
el 31 de Mayo de 2023
Tjeerd Ickenroth
el 31 de Mayo de 2023
You need to change it once in the GUI and you always obtain bode plots in Hz. The setting remains even when you restart Matlab.
marcel hendrix
el 31 de Mayo de 2023
Dimitris Kalogiros
el 22 de Sept. de 2018
clc;close all; clc
% test system
s=tf('s');
H=(s-1)/((s-3)*(s-2))
% bode
[mag,phase,wout] = bode(H);
%plot results, with frequency expressed at Hz
figure;
subplot(2,1,1);
semilogx(wout(:,1)/(2*pi), 20*log10(squeeze(mag)), '-b'); zoom on; grid on;
title('magnitude'); xlabel('Frequency (Hz)'); ylabel('Magnitude (dB)');
subplot(2,1,2);
semilogx(wout(:,1)/(2*pi), squeeze(phase), '-r'); zoom on; grid on;
title('Phase'); xlabel('Frequecy (Hz)'); ylabel('Phase (deg)');

2 comentarios
Meth Hai
el 15 de Jul. de 2024
%%% G1 & and G2 is your TFs
[mag1, phase1, wout1] = bode(G1);
[mag2, phase2, wout2] = bode(G2);
% Convert angular frequency (rad/s) to frequency (Hz)
freq1 = wout1 / (2 * pi);
freq2 = wout2 / (2 * pi);
% Plot the magnitude response
figure;
subplot(2,1,1);
semilogx(freq1, 20*log10(squeeze(mag1)), '-b');
hold on;
semilogx(freq2, 20*log10(squeeze(mag2)), '-g');
grid on;
title('Magnitude');
xlabel('Frequency (Hz)');
ylabel('Magnitude (dB)');
legend('G1', 'G2');
%%%%%%%%%%%%
% Plot the phase response
subplot(2,1,2);
semilogx(freq1, squeeze(phase1), '-r');
hold on;
semilogx(freq2, squeeze(phase2), '-m');
grid on;
title('Phase');
xlabel('Frequency (Hz)');
ylabel('Phase (deg)');
legend('G1', 'G2');
Paul
el 5 de En. de 2025
2 votos
4 comentarios
marcel hendrix
el 5 de En. de 2025
Paul
el 5 de En. de 2025
Preferences set via ctrlpref "are automatically reloaded in future MATLAB® sessions using the Control System Toolbox software" so there should be no need to load them for each Matlab session.
Preferences for other things set through the Preferences button on the Enviroment section of the ribbon of the Matlab window also carry over to future Matlab sessions so no need to do anything on a per session basis.
Don't know why Control System Toolbox preferences are not accessible through the Preferences button as is the case for other toolboxes.
The startup.m file offers a way to "bulkload" things at the start of Matlab session.
marcel hendrix
el 5 de En. de 2025
Editada: marcel hendrix
el 15 de Nov. de 2025
Some things can be controlled programatically via settings. See Access and Modify Settings. Unfortunately, these don't cover the Control System Toolbox (why not?). As far as I know, the only way to deal with the CST is via ctrlpref, for which there is no programmatic interface (why not?), as far as I know. Those CST preferences are saved to disk somewhere somehow, so it might be possible copy them from one machine to another. You may want to open up a new question on this topic.
s = settings
Categorías
Más información sobre Plot Customization en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!