Bode-Plot-Anzeige in Matlab

Ich möchte einen Bode-Plot eines Buck-Boost-Wandlers mit Matlab anzeigen, also habe ich die unten gezeigte Abbildung erhalten. Wenn wir uns den Phasenplot genauer ansehen, sehen wir, dass er bei 360 ° beginnt. Mein Wunsch ist es, dass die Grafik bei 0° beginnt und nicht bei 360°, um mir das Lesen zu erleichtern.

  • Was soll ich tun, damit das Phasendiagramm bei 0° beginnt?
  • Eine andere Frage ist, wie kann ich die Verstärkung bei einer gewünschten Übergangsfrequenz im Diagramm anzeigen?

    Geben Sie hier die Bildbeschreibung ein

Was war das dynamische Systemmodell, das Sie verwendet haben? Verwenden Sie die Control System Toolbox und wenn ja, mit welchem ​​Befehl (bode, bodeplot) haben Sie das Bode-Diagramm gezeichnet?
Manchmal verwende ich den Befehl bode(sys,options) und manchmal margin(sys). In dieser Anzeige habe ich den Befehl margin(sys) verwendet. Aber in beiden Fällen bekomme ich, dass das Phasendiagramm bei 360 ° und nicht bei 0 ° beginnt

Antworten (1)

Eine mögliche Lösung wäre, bodeplot zu verwenden und dann die PhaseMatchingValue-Eigenschaft zu ändern. Als Beispiel verwende ich H ( S ) = S 4 + 1 S + 1 :

sys = tf([1 0 0 0 1],[1 1]);
h = bodeplot(sys);
p = getoptions(h);
p.PhaseMatching = 'on';
p.PhaseMatchingFreq = 1; 
p.PhaseMatchingValue = 0;
setoptions(h,p);

Daraus ergibt sich das folgende Bode-Diagramm

Bode-Diagramm mit PhaseMatchingValue = 0

Eine andere (nicht sehr elegante) Lösung mit dem Befehl bode

sys = tf([1 0 0 0 1],[1 1]);
wout = logspace(-2,2,201);
[mag,phase,wout] = bode(sys,wout);
wout = squeeze(wout);
mag = squeeze(mag);
phase = squeeze(phase);
%adjusting the phase
phase = phase - 360;
subplot(2,1,1);
% plot amplitude response
semilogx(wout,20*log10(mag));
hold on;
%mark a point at wout(101)
semilogx(wout(101),20*log10(mag(101)),'xr');
text(wout(101),20*log10(mag(101)),'\omega = 1')
%plot phase response
subplot(2,1,2);
semilogx(wout,phase);

Bode-Diagramm mit bode