WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

bestimmte Werte in Matrix finden?

 

sirpaderick
Forum-Anfänger

Forum-Anfänger



Beiträge: 14
Anmeldedatum: 18.06.08
Wohnort: Ludwigshafen
Version: 7.5.0 (R2007b)
     Beitrag Verfasst am: 08.10.2008, 20:13     Titel: bestimmte Werte in Matrix finden?
  Antworten mit Zitat      
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

%------ Berechnung ----------------------------------

Fmax=mue*m*9.81/2;     % maximale Antriebskraft
LW=-cw/2*rho*A/m;      % Luftwiderstand
kmax=round(tmax/dt)+1; % Anzahl der Berechnungsschritte

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'),

 subplot(2,2,3:4),
 plot(P,T,'gx','linewidth',2)
 grid on
 title('Zeit gegen Leistung'),
 xlabel('P in kW'),
 ylabel('t in s'),
 

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
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 10.10.2008, 08:31     Titel:
  Antworten mit Zitat      
Moin,

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

%------ Berechnung ----------------------------------

Fmax=mue*m*9.81/2;     % maximale Antriebskraft
LW=-cw/2*rho*A/m;      % Luftwiderstand
kmax=round(tmax/dt)+1; % Anzahl der Berechnungsschritte

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 -------------------------------------

figure,
subplot(2,2,1),
plot(s(end,:)./1000,v(end,:).*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(end,:)./1000,F(end,:),'b','linewidth',2),
grid on
title('Antriebskraft über dem Weg'),
xlabel('s in km'),
ylabel('F in N'),

 subplot(2,2,3:4),
 plot(P,T,'gx','linewidth',2)
 grid on
 title('Zeit gegen Leistung'),
 xlabel('P in kW'),
 ylabel('t in s'),


Schau dir mal an was ich verändert habe und frag nach, wenn du etwas nicht verstehst Wink

Gruß
Alex

PS: In meinem Code wird v über s und F über s vom letzten Leistungswert geplottet.
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
sirpaderick
Themenstarter

Forum-Anfänger

Forum-Anfänger



Beiträge: 14
Anmeldedatum: 18.06.08
Wohnort: Ludwigshafen
Version: 7.5.0 (R2007b)
     Beitrag Verfasst am: 10.10.2008, 16:38     Titel:
  Antworten mit Zitat      
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
Code:

%------ Eingabedaten --------------------------------

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

%------ Berechnung ----------------------------------

Fmax=mue*m*9.81/2;     % maximale Antriebskraft
LW=-cw/2*rho*A/m;      % Luftwiderstand
kmax=round(tmax/dt)+1; % Anzahl der Berechnungsschritte

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

%------ 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'),

subplot(2,2,3:4),
plot(P,T,'g.','linewidth',2)
grid on
title('Zeit gegen Leistung'),
xlabel('P in kW'),
ylabel('t in s'),
 
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 10.10.2008, 16:46     Titel:
  Antworten mit Zitat      
sirpaderick hat Folgendes geschrieben:
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?).

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.