Punkt aus Diagramm bzw Tangent < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 17:23 Mo 15.10.2007 | Autor: | ellmer83 |
Hallo erstmal!
Also ich habe folgendes Problem mit MATLAB.
Folgendes mache ich damit ich zur Sprungantwort eines Systems komme:
wn=1;
d=0.5;
[mm] T=tf([wn^2],[1 [/mm] 2*d*wn [mm] wn^2])
[/mm]
[y,t]=step(T);
tmax=max(t);
t=linspace(0,tmax,1000);
y=step(T,t)
step(T,t)
jetzt habe ich einen genauen t und y Wert.
Ich möchte nun den t Wert bei meinem y = 0.5.
Wie mache ich das??
Ich kann ja y nicht solange durchlaufen lassen und immer fragen ob er bei 0.5 ist?? Da müsste es doch einen einfacheren Befehl geben.
Durch ablesen bekomme ich den Wert 1.29 für t. Ablesen kann ich, aber ich möchte das er mir den Wert automatisch ausgibt.
Dann möchte ich noch gerne die Steigung in diesem Punkt machen. Mit dem Befehl "diff" müsste das doch gehen?? Der macht mir die erste Ableidtung.
Aber ich weiß nicht wirklich was ich da einsetzen soll, wenn ich den Punkt noch nicht einmal auslesen kann.
Hoffe es kann mir jemand helfen bzw. mir einen Tipp geben.
Danke Christian
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 22:54 Mo 15.10.2007 | Autor: | ellmer83 |
OK also
den Wert für t bei y=0.5 habe ich jetzt bekommen
es ist zwar überhaupt nicht elegant aber eine andere Möglichkeit fällt mir gerade nicht ein.
for i=1:1000;
if y(i)>= 0.5;
y50=y(i)
t50=t(i)
break
end
end
einfach bei meinem oberen Bsp nach y=step(T,t);
eingeben.
Jetzt muss ich nur mehr die Tangente reinlegen.
|
|
|
|
|
Hallo,
etwas eleganter wäre vielleicht die folgende Lösung:
i50=min(find(y>=0.5));
y50=y(i50); t50=t(i50);
Damit können wir Steigung m und Achsenabschnitt n der Tangente berechnen. Dabei nutze ich eine der Möglichkeiten für den diskreten Gradienten:
m = (y(i50+1) - y(i50-1)) / (t(i50+1) - t(i50-1));
n = y50 - t50*m;
Nun können wir die Tangente zu der bereits gezeichneten Sprungantwort dazuzeichnen:
hold on; plot([t(10); t(250)],[n+m*t(10); n+m*t(250)],'r');
Das sieht dann so aus:
[Dateianhang nicht öffentlich]
Gruß
Martin
Dateianhänge: Anhang Nr. 1 (Typ: jpg) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:10 Di 16.10.2007 | Autor: | ellmer83 |
Danke genau so habe ich mir das vorgestellt.
Werde es gleich einmal ausprobieren.
Danke Christian
|
|
|
|