How to change the default x-axis unit in a Bode diagram to Hertz?
663 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
marcel hendrix
el 22 de Sept. de 2018
Comentada: Meth Hai
el 15 de Jul. de 2024
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.
1 comentario
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.
Respuesta aceptada
Star Strider
el 22 de Sept. de 2018
It gives you that option, and the documentation specifically mentions that.
4 comentarios
Star Strider
el 22 de Sept. de 2018
Editada: Star Strider
el 22 de Sept. de 2018
That is what I would do.
I defer to bodeplot because it allows some customization. I use and plot the bode outputs only if I want other options.
EDIT —
I add that this was my original recommendation!
Más respuestas (2)
Tjeerd Ickenroth
el 31 de Mayo de 2023
Type 'ltiview' in your command window. The Linear System Analyzer will pop up. Click on: File --> Toolbox Preferences... --> Units --> Frequency: Hz
3 comentarios
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.
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');
Ver también
Categorías
Más información sobre Plot Customization en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!