Verfasst am: 08.10.2008, 19:13
Titel: bestimmte Werte in Matrix finden?
Hallo, habe mal wieder eine Frage und probiere hier die ganze Zeit wie verrückt herum.
Es handelt sich um die Berechnung der Beschleunigungszeit von einem Auto von 0 auf 100 mit Annahme unterscheidlicher Leistungen.
ich poste mal den Code und dann erkläre ich weiter.
Code:
m=1400; % Masse des PKW in kg
mue=0.92; % Haftreibung zwischen Reifen und Straße
A=2.3; % Anströmfläche des PKW in m2
%P=5; % Leistung in kW
cw=0.45; % Luftwiderstandkoeffizient des PKW
rho=1.2; % Dichte der Luft in kg/m3
tmax=60; % Berechnungszeit in s
dt=0.1; % Zeitschrittweite zur Berechnung in s
s0=0; % Anfangsposition in m
v0=0; % Anfangsgeschwindigkeit in m/s
s(1)=s0;
v(1)=v0;
F(1)=0;
T=[];
P=[];
for p=10:5:70;
for k=2:kmax,
s1=s(k-1);
v1=v(k-1);
F(k)=min(p*1000/(v1+1e-10),Fmax); % antreibende Kraft in N
v2=v1+dt*(LW*v1*abs(v1)+F(k)/m); % neue Geschwindigkeit
s2=s1+dt*(v2+v1)/2; % neuer Weg
v(k)=v2;
s(k)=s2;
if v(k)>27.7, break;
end
t=s(k)/v(k);
T=[T t];
P=[P p];
end end
%------ Ausgabe -------------------------------------
subplot(2,2,1),
plot(s/1000,v*3.6,'r','linewidth',2),
grid on
title('Geschwindigkeit über dem Weg'),
xlabel('s in km'),
ylabel('v in km/h'),
subplot(2,2,2) plot(s/1000,F,'b','linewidth',2),
grid on
title('Antriebskraft über dem Weg'),
xlabel('s in km'),
ylabel('F in N'),
ich hab die Aufgabe einmal gelöst, allerdings nicht mit einer Schleife. Ich habe P einfach im Bereich 10:5:70 jedesmal separat berechnet und mir manuell die Werte für v=27,7 (m/s) und die dementsprechenden Werte für s ausgelesen. Das ist ein anderer Code. Mit Schleife sollte es aber auch gehen, nur wie?
wenn man den Code jetzt laufen lässt, ist das Ergebnis grob gesehen das gleiche,aber ich möchte das mir Matlab nur den einen Wert für t für den Fall das die Geschwindigkeit 27,7 beträgt (100km/h) ausgibt und auch nur diesen in der Matrix T speichert.
Ich weiß es hört sich wahrscheins komplex an, ich denke aber das der Code an sich gar nicht so falsch ist.
Falls jemand eine Rückfrage hätte, antworte ich schnellstmöglich
Vielen Dank schonmal
m=1400; % Masse des PKW in kg
mue=0.92; % Haftreibung zwischen Reifen und Straße
A=2.3; % Anströmfläche des PKW in m2
%P=5; % Leistung in kW
cw=0.45; % Luftwiderstandkoeffizient des PKW
rho=1.2; % Dichte der Luft in kg/m3
tmax=60; % Berechnungszeit in s
dt=0.1; % Zeitschrittweite zur Berechnung in s
s0=0; % Anfangsposition in m
v0=0; % Anfangsgeschwindigkeit in m/s
p0 = 10:5:70;
v = nan(numel(p0),kmax);
s = nan(numel(p0),kmax);
F = nan(numel(p0),kmax);
s(:,1)=s0;
v(:,1)=v0;
F(:,1)=0;
T=[];
P=[];
l = 0;
for p=p0
l = l+1;
s1=s0;
v1=v0;
for k=2:kmax,
% s1=s(k-1); % v1=v(k-1);
F(l,k)=min(p*1000/(v1+1e-10),Fmax); % antreibende Kraft in N
v2=v1+dt*(LW*v1*abs(v1)+F(l,k)/m); % neue Geschwindigkeit
s2=s1+dt*(v2+v1)/2; % neuer Weg
v(l,k)=v2;
s(l,k)=s2;
if v2>27.7, break;
end
t=s2/v2;
v1 = v2;
s1 = s2;
end
T=[T t];
P=[P p];
end
%------ Ausgabe -------------------------------------
Danke,
muss mich noch in deinen Code reinarbeiten.
Ich habe auch eine Version teils fertiggestellt (hat sehr lange gedauert) und poste sie einfach mal, falls es dich interessiert. Bei den ersten beiden Werten von P werden die 100km/h nicht innerhalb der 60 Sekunden erreicht (evtl nie). Jetzt versuche ich noch es hinzubekommen, dass er alle gechwindigkeiten über allen Strecken in Abhängigkeit der Leistung plottet.
Gruß Patrick
m=1400; % Masse des PKW in kg
mue=0.92; % Haftreibung zwischen Reifen und Straße
A=2.3; % Anströmfläche des PKW in m2
%P=5; % Leistung in kW
cw=0.45; % Luftwiderstandkoeffizient des PKW
rho=1.2; % Dichte der Luft in kg/m3
tmax=60; % Berechnungszeit in s
dt=0.1; % Zeitschrittweite zur Berechnung in s
s0=0; % Anfangsposition in m
v0=0; % Anfangsgeschwindigkeit in m/s
s(1)=s0;
v(1)=v0;
F(1)=0;
T=[];
P=[];
a=[];
b=[];
for p=10:70;
for k=2:kmax;
s1=s(k-1);
v1=v(k-1);
F(k)=min(p*1000/(v1+1e-10),Fmax); % antreibende Kraft in N
v2=v1+dt*(LW*v1*abs(v1)+F(k)/m); % neue Geschwindigkeit
s2=s1+dt*(v2+v1)/2; % neuer Weg
v(k)=v2;
s(k)=s2;
if v(k)>27.78, break;
else a=[a v(k)];
b=[b s(k)];
end end
c=length(b);
t=(s(c))/mean(a);
T=[T t];
P=[P p];
a=[];
b=[];
end
Jetzt versuche ich noch es hinzubekommen, dass er alle gechwindigkeiten über allen Strecken in Abhängigkeit der Leistung plottet.
Das sollte sich mit meinem Code machen lassen, da dort die Geschwindigkeiten und zugehörigen Wege für jede Leistung abgespeichert werden (in s und v). Du müsstest dir nur überlegen, wie du die plottest (evtl. 3D-Diagramm?).
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.