Funktion Plotten < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Hallo und einen schönen guten Tag...
möchte gerne folgende Funktion Plotten...(kenne mich leider noch nicht sehr gut damit aus)
>> t=0:0.001:0.25;
>> y=(1-exp(2.2.*t)).*cos(60.*pi.*t);
>> plot(y)
das funktioniert...wenn ich das aber jetzt mit einer for schleife lösen möcte komme ich nicht weiter...
>> for t=0:0.001:0.25
y=(1-exp(2.2*t))*cos(60*pi*t);
end;
>> plot(t,y)
...dann plottet der nur den letzten wert....
bitte um Hilfe..danke
Ich habe diese Frage auch in folgenden Foren auf anderen Internetseiten gestellt:
[Hier gibst du bitte die direkten Links zu diesen Fragen an.]
oder
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo,
dann schauen wir uns mal die beiden Ansätze an:
Beim ersten ist t eine 251-spaltige einzeilige Matrix. Da Matlab mit Matrizen gut umgehen kann, kann man in nur einem Schritt die komplette y-Matrix selber Größe berechnen, die zu jedem Element von t den Funktionswert enthält.
Bei dem Ansatz mit der for-Schleife durchläuft der Skalar t alle Werte von 0 bis 0.25, aber er ist bei jedem Durchlauf nur ein Skalar. Deshalb ist auch das Ergebnis ein Skalar. Das y wird bei jedem Durchlauf neu berechnet, so dass man am Ende nur den zuletzt berechneten Wert sieht.
Auch wenn der erste Ansatz der elegantere ist, hier mal die korrekte Lösung für den zweiten Ansatz mit einer zusätzlichen Laufvariablen i:
>> i=0
>> for t=0:0.001:0.25
i=i+1
y(i)=(1-exp(2.2*t))*cos(60*pi*t);
end;
>> plot(y);
Gruß
Martin
|
|
|
|
|
vielen dank für deine hilfe...
ok also ich nehme mal an dass i der Schleifenindex ist...also der Schleifenzähler...ok er wird also bei jedem schleifenumlauf um 1 incrementiert...alles klar aber warum schreibt man dann y(i) ?
danke für deine antwort
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 10:12 Fr 20.10.2006 | Autor: | Martin243 |
Hallo,
der Ausdruck
y=(1-exp(2.2*t))*cos(60*pi*t);
hat auf der rechten Seite einen Term, der einen Skalar ergibt. Daher wird bei jedem Schleifendurchlauf ein Skalar y erzeugt, keine Matrix! Woher soll y denn wissen, dass es bei jedem Schleifendurchlauf ein anderes Matrixelement erhalten soll?
Es ist natürlich auch möglich, punktweise zu plotten, aber dann muss die for-Schleife auch das plot enthalten:
>> hold on;
>> for t=0:0.001:0.25
y=(1-exp(2.2*t))*cos(60*pi*t);
plot(t,y);
end;
Gruß
Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:19 Do 19.10.2006 | Autor: | BKM |
Hallo.
Wenn ich den Text richtig deute geht es darum, 3 (oder mehr)Fkt.-Plots in einem Koordinatensystem gleichzeitug darzustellen!? Dazu ist folgendes kleines Programm zu benutzen
:
>> echo on
t=0:.001:.25;
figure, hold on
y=(1-exp(2.2.*t)).*cos(60.*pi.*t);
for c=1:3
plot(c*t, y)
echo off
end
echo on, hold off, axis([0,.8, -.2*pi,.2*pi]);
Dieses Programm liefert alle 3 Plots in einem K.-system!
Viel Spass.
BKM
Dateianhänge: Anhang Nr. 1 (Typ: jpg) [nicht öffentlich] Anhang Nr. 2 (Typ: m) [nicht öffentlich]
|
|
|
|