How to change the default x-axis unit in a Bode diagram to Hertz?
290 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
marcel hendrix
am 22 Sep. 2018
Kommentiert: Paul
am 6 Jan. 2025
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 Kommentare
dpb
am 22 Sep. 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
am 4 Jan. 2025
Actually you can, click on the plot tab from linearization manager, click plot properties, click units. Change to whatever units you need.
Akzeptierte Antwort
Star Strider
am 22 Sep. 2018
It gives you that option, and the documentation specifically mentions that.
4 Kommentare
Star Strider
am 22 Sep. 2018
Bearbeitet: Star Strider
am 22 Sep. 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!
Weitere Antworten (3)
Tjeerd Ickenroth
am 31 Mai 2023
Type 'ltiview' in your command window. The Linear System Analyzer will pop up. Click on: File --> Toolbox Preferences... --> Units --> Frequency: Hz
3 Kommentare
Tjeerd Ickenroth
am 31 Mai 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
am 22 Sep. 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 Kommentare
Meth Hai
am 15 Jul. 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
am 5 Jan. 2025
4 Kommentare
Paul
am 6 Jan. 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
Siehe auch
Kategorien
Mehr zu Plot Customization finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!