Verfasst am: 28.06.2010, 11:47
Titel: Problem mit Subplot
Hallo, momentan gibt mein Programm ein Diagramm aus in dem ich 2 Plots habe! Mit Subplot habe ich versucht jede Funktion einzeln zu plotten, funktioniert allerdings nicht! Kann mir wer sagen was ich falsch gemacht habe:
Code:
global g rho cw m Am;
H0 = 3000; % height of plane meter
H1 = 1500; % opening height parachut meter
H=[H1,H0];
Am = 0.5; % area man meter^2
Ap = 30; % area parachut meter^2
A = Am+Ap; % whole area
m = 85; % weight parachutist in kg
cw = 0;
cw_2 = 1.3; % cw-value
rho = 1.2; % air density kg/m^3
g = 9.81; % acceleration gravity
a1 = (cw*Am*rho)/(2*m); % air resitance before p. opens
a2 = (cw*A*rho)/(2*m); % air resitance aftzer p. opens
%Phase 1 des Sprungs und Startbedingungen festlegen
tstart=0
tfinal=100
y0=[0;0]
refine=4 %liefert eine Verfeinerung der Ausgabewerte via Interpolation
for i=1:2 %Beginn der Schleife, 2 Durchläufe weil 2xLösung DGL
%options gibt bestimmte Einstellungen für die DGL-Lösung vor
%Events legt fest, dass Event Flaggs beachtet werden
%OutputFcn wurde nicht berücksichtigt
%OutputSel gibt Werte zwischen Durchgang 1 u. 2 der Schleife aus
%Refine (siehe oben)
options = odeset('Events',@(t,y)events(t,y,H(i)),'OutputFcn', @odeplot,...
'OutputSel',[1,2],'Refine',refine);
% Differentialgleichung bis ersten "Event" lösen [t,y,te,ye,ie] = ode23(@fallschirmdgl,[tstart tfinal],y0,options);
if ~ishold %Wenn "Event" dann.... hold on %...wird Gleichung für gebremsten Fall gelöst!
end
% Ausgang wird akkumuliert
nt = length(t);
tout = [tout; t(2:nt)]; %tout, yout = Bahnen zwischen Events
yout = [yout; y(2:nt,:)];
teout = [teout; te]; %Zeitmomente der Events + zugehörige Lösung wird akkumuliert
yeout = [yeout; ye]; %siehe oben
ieout = [ieout; ie]; %sihe oben
%Endwerte der ersten Funktion in zweite einsetzen
y0(1) = y(nt,1);
y0(2) = y(nt,2);
cw=cw_2; %CW-Wert ändert sich wg. Fallschirmöffnung
tstart = t(nt);
end
%Achsenbeschriftung und Plotten
subplot(2,1,1) plot(teout,yeout(:,1),'ro');
subplot(2,1,2) plot(teout,yeout(:,2),'ro');
title('Fallschirmsprung');
hold off
odeplot([],[],'done');
Wie sieht die Ausgabe derzeit aus?
Fehlermeldungen? Wenn ich nur die Plot-Kommandos ausführe, dann erstellt er zwei Graphen. Vll liegt es an yeout und teout? Wie sehen diese aus (mit "whos" checken)?
_________________
er bringt mir keine Fehlermeldung sonder plottet mir anfangs beide in einen Plot, dieses Fenster verschwindet dann sofort und er macht mir zwei Fenster in denen lediglich die Zwei Anfangspunkte markiert sind! Ich meine es könnte daran liegen dass die Punkte dazwischen live geplottet werden (siehe odeset).... Lieg ich da richtig? Wie kann ich das Problem lösen?
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.