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

Sky Diver (Zeit gegen Geschw. plot)

 

Bienchen89
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 01.07.14
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 14.07.2014, 12:12     Titel: Sky Diver (Zeit gegen Geschw. plot)
  Antworten mit Zitat      
Hallo zusammen,

ich versuche gerade die Geschwindigkeit eines Falschirmspringers gegen die zeit zu plotten und da gibt matlab mir dann jedes Mal einen fehler an, den ich nicht beseitigen kann. Ich muss dazu sagen, dass ich neu bei matlab bin noch sehr unerfahren. Mein Programm lautet folgendermaßen:

Code:


clear all
close all
clc

m=68.1;     %kg
Cd=0.25;    %kg/m
g=9.81;     %Gravitation
dt=1;       %Zeitintervall
v=0;        %Geschwindigkeit
t=0;        %Zeit
i=1;

while i<12;
    v(1)=0;       %Anfangsbedingung v(0)=0
    v(i+1)= v(i) + (g-(Cd/m)*(v(i))^2)*dt;      %Formel für v nach Euler
    i=i+dt;
end

V(i)=v;
T(i)=t;
t=t+dt;

plot (T,V)
axis equal


 


Antwort von matlab:
In an assignment A(I) = B, the number of elements in B and I must be the same.

Error in skydiver (line 19)
V(i)=v;


Über eure Hilfe wäre ich sehr dankbar.
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 14.07.2014, 23:39     Titel: Re: Sky Diver (Zeit gegen Geschw. plot)
  Antworten mit Zitat      
Hallo Bienchen89,

Der "brutale Clearing Header" mit "clear all" löscht leider alle Breakpoints, so dass Du nicht mehr den Debugger verwenden kannst. Das ist ein großer NAchteil, wenn man versucht Probleme im Code zu finden.

Wie schon so oft erwähnt wundere ich mich, wieso Matlab-Neulinge immer wieder auf die Idee kommen, sich per "clear all" das Programmieren unnötig zu erschweren. Es scheinen so viele Matlab-Dozenten diesen Ratschlag von einander abzugucken, dass wohl irgendwann per Mehrheit entschieden wurde, dass das gut ist. Die Mehrheit hat aber in diesem Fall nicht recht.

Also: Entferne mal das "clear all" und setze einen Breakpoint auf die Zeile, die scheitert (im Editor links neben den Code klicken bis ein roter Punkt erscheint). Starte dann das Programm nochmal. Wenn der Breakpoint erreicht ist, stoppt Matlab und Du kannst die benutzten Variablen im Command Window anschauen:
Code:

V(i) ist ein Skalar, da i eines ist. Auf der rechten Seite der Zuweisung steht aber ein Vektor.
Was meinst Du soll "V(i)=v" bewirken?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Bienchen89
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 01.07.14
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 15.07.2014, 08:19     Titel:
  Antworten mit Zitat      
V(i) soll die Werte die in der Schleife berechnet wurden als Vektor darstellen. Diesen Vektor plotte ich dann als y-Achse, da er die Geschwindigkeit des Skydivers ist.

Das Problem, so wie ich das verstehe, ist, dass ich in der Schleife durch i+1 einen wert zu viel errechne und der Vektor hat aber nur i Werte. Ich hab so viel rumprobiert, konnte das Problem aber leider nicht lösen.

VG Irina
Private Nachricht senden Benutzer-Profile anzeigen
 
bustapans
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 17.02.10
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 15.07.2014, 09:03     Titel:
  Antworten mit Zitat      
das sollte funktionieren:
Code:



clear all
close all
clc

m=68.1;     %kg
Cd=0.25;    %kg/m
g=9.81;     %Gravitation
dt=1;       %Zeitintervall
v=0;        %Geschwindigkeit
t=0;        %Zeit
i=1;

while i<12;
    v(1)=0;       %Anfangsbedingung v(0)=0
    v(i+1)= v(i) + (g-(Cd/m)*(v(i))^2)*dt;      %Formel für v nach Euler
    t(1) = 0;
    t(i+1) = t(i) + dt;
    i=i+dt;
end

T = t;
V = v;

plot (T,V)
axis equal
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 15.07.2014, 13:41     Titel:
  Antworten mit Zitat      
Hallo Bienchen89

Zitat:
V(i) soll die Werte die in der Schleife berechnet wurden als Vektor darstellen.

V(i) ist wie gesagt ein Skalar. Was immer "als Vektor darstellen" auch bedeutet, der Index "i" ist dafür nicht geeignet in Matlab.
Wie von bustapans schon gezeigt, werden "V" und "T" gar nicht beötigt und Du kannst einfach "v" und "t" benutzen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Bienchen89
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 01.07.14
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 17.07.2014, 09:17     Titel:
  Antworten mit Zitat      
Ich hab das Problem jetzt gelöst. Vielen Dank
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 - 2025 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.