Forum: PC Hard- und Software MATLAB - Wie kann ich parametrisch plotten?


von Diplomand (Gast)


Lesenswert?

Mahlzeit zusammen,

ich bin gerade dabei, einige Bode-Diagramme in die Ausarbeitung meiner 
Diplomarbeit einzufügen. Hierfür nutze ich MATLAB.
Da es in der DA um Schaltnetzteile geht, möche ich die Bode-Diagramme 
abhängig vom Tastverhältnis plotten. Also Amplituden- und Phasengang 
jeweils untereinander. Das geht wunderbar. Aber jeweils nur für ein 
Tastverhältnis. Ich hätte aber gerne jeweils den Amplituden- und 
Phasengang für verschiedene (sagen wir fünf) Tastverhältnisse in den 
beiden Koordinatensystemen, damit man den Verlauf sehen kann.

Hab auch schon etwas herumprobiert:
Also erstmal einen Vektor mit den gweünschten Tastverhältnissen 
angelegt:
D=[1. .3 .5 .7 .9];
Was ich gerne hätte, wäre so ein Konstrukt mit for-Schleife, das mir 
dann die Plots erzeugt:
x=[1:100:1e6];       %Freqeunzbereich
for i=1:5
  D_plot=D(i);       %Tastverhältnis für diesen Plot festlegen
  semilogx(x,Bode)   %"Bode" hier nur symbolisch für Ausgabe
  hold on            %nächsten Plot ins selbe Koordinatensystem
end

Mache ich das aber so, plottest das blöde MATLAB immer nur das letzte 
Bode-Diagramm (D=0,9).
Wie kann ich erreichen, daß die anderen vier auch erzeugt werden?

Würde mich freuen, wenn mir das jemand erklären könnte!

Danke schonmal,
Grüße vom Diplomand

von ---- (Gast)


Lesenswert?

Mit dem Kommando "hold on" kann das überschreiben des Plots verhindert 
werden das Kommando "hold off" hebt es wider auf.

von Diplomand (Gast)


Lesenswert?

OK, das dachte ich mir schon mit dem "hold off".
Wo genau bau ich das dann aber ein in meine Schleife? Nach dem "end"?
Würde dann aber wenig Sinn machen, da ja hier schon die Schleife zu Ende 
ist...

von ---- (Gast)


Lesenswert?

In der Zeit wo du den Beitrag geschriehen hast, hättest du das sicher 
selber herausgefunden!

clf
hold on
plot();
plot();
hold off

von Diplomand (Gast)


Lesenswert?

Nö, da muß ich Dich leider enttäuschen, geht trotzdem nicht.
Hier mal mein Code der entscheidenden for-Schleife:
1
for i=1:5
2
3
    D=M(i);  % in M sind die einzelnen Werte für D abgelegt
4
5
    % Amplitudengang
6
    hold on
7
    subplot(2,1,1)
8
    semilogx(f,20*log10(g1))  % in g1 wird der Amplitudengang berechnet
9
    hold off
10
    grid on
11
    title('Bode-Diagramm')
12
    ylabel('Verstärkung[dB]')
13
14
    % Phasengang
15
    hold on
16
    subplot(2,1,2)
17
    semilogx(f,g2*(180/pi))  % in g2 wird der Phasengang berechnet
18
    hold off
19
    grid on
20
    xlabel('Frequenz[Hz]')
21
    ylabel('Phase[°]')
22
23
end

MATLAB plottet nur das Bode-Diagramm für D=0,9 (letzter Eintrag in M).

von ozo (Gast)


Lesenswert?

hold on, off sollte außerhalb der Schleife stehen, oder?

von Tom E. (tkon)


Lesenswert?

lass mal das "hold off" komplett raus

von ---- (Gast)


Lesenswert?

Ist ganz einfach, hold on vor dem ersten oder zweiten plot Aufruf 
setzten und hold off nach dem letzten -> vor und nach der Schleife.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.