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

Variable im Zeitverlauf ändern

 

gdow86
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 20.07.12
Wohnort: ---
Version: 7.9.0 (R2009b)
     Beitrag Verfasst am: 25.07.2012, 13:54     Titel:
  Antworten mit Zitat      
@DSP:
Also er geht in die else-Schleife, erstens weil der Wert von a ja reduziert wird und zweitens weil er dort bei einem breakpoint anhält.

@Goofy9020:
- Ja, a wird einmalig vor der for-Schleife auf 10 gesetzt. Sonst bekomme ich ja undeclared variable.
- t ist aufsteigend sortiert.
- Zu jedem Zeitpunkt t müsste a ja einen anderen Wert haben, sonst kann die Geschwindigkeit ja nicht abnehmen, oder?
Private Nachricht senden Benutzer-Profile anzeigen


Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 25.07.2012, 13:57     Titel:
  Antworten mit Zitat      
Okay hab mich etwas falsch ausgedrückt. Soll nach der for Schleife dann a einen Wert haben oder soll nach der Schleife a ein Vektor mit gleicher Länge wie t sein indem zu jedem Zeitpunkt t ein Wert drin steht?
Private Nachricht senden Benutzer-Profile anzeigen
 
gdow86
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 20.07.12
Wohnort: ---
Version: 7.9.0 (R2009b)
     Beitrag Verfasst am: 25.07.2012, 14:01     Titel:
  Antworten mit Zitat      
Eigentlich müsste a nach der for-Schleife einen Wert haben der dann unten übergeben wird und im nächsten Zeitschritt einen neuen der wieder übergeben werden kann.

Denn mit einem Vektor kann mein ode bzw. eher der Teil du(2)=a/m; ja nichts anfangen, wenn ich da falsch liege korrigiere mich bitte Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 25.07.2012, 14:04     Titel:
  Antworten mit Zitat      
Also willst du bei jedem Schleifendurchlauf das du(2) = a/m berechnen? Wenn JA dann solltest du dies auch in die Schleife reinschreiben Wink

Derzeit berechnest du das a und das letzte a was du hast verwendest du für du(2)=a/m;

Ja du kannst du(2)=a/m; auch nen Vektor rein stecken.
Private Nachricht senden Benutzer-Profile anzeigen
 
gdow86
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 20.07.12
Wohnort: ---
Version: 7.9.0 (R2009b)
     Beitrag Verfasst am: 25.07.2012, 14:25     Titel:
  Antworten mit Zitat      
Auch wenn ich du(2)=a/m; in die Schleife stecke ändert das leider weder etwas an dem Plot noch an meinem F Sad

Je nachdem wo ich es reinschreibe erhalte ich sogar Fehlermeldungen das der ode dann nichts mehr zum rechnen hat...
Private Nachricht senden Benutzer-Profile anzeigen
 
Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 25.07.2012, 14:42     Titel:
  Antworten mit Zitat      
Hab es mir jetzt mal angesehen.
Problem hier ist dein a. Da dieses variable sein soll, hier aber eben nicht ist. Es werden immer zwei Werte an deine Unterfunktion übergeben, daher ist die Schleife auch überflüssig in der Funktion. Problem eben das a für jeden Schritt verändern zu lassen.
Private Nachricht senden Benutzer-Profile anzeigen
 
gdow86
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 20.07.12
Wohnort: ---
Version: 7.9.0 (R2009b)
     Beitrag Verfasst am: 25.07.2012, 14:47     Titel:
  Antworten mit Zitat      
Muss ich vielleicht mein a als Funktion von t definieren?

Also irgendwas wie:
Code:
a= @t a-x;


Damit wäre doch mein a immer abhängig von t, oder nicht?
Private Nachricht senden Benutzer-Profile anzeigen
 
Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 25.07.2012, 15:02     Titel:
  Antworten mit Zitat      
So hab nochmal was probiert. Nicht schön und wahrscheinlich anders lösbar aber vlt. klappt es jetzt:

Code:
function test()


% tspan=0:0.1:10;
tspan=0:1:10;
assignin('base','a',10);
u=[0;5];

[t,y]=ode45(@odefun,tspan,u);


figure(120)
subplot(3,1,1);
plot(t,y(:,1));

subplot(3,1,2);
plot(t,y(:,2));

    end


function du= odefun(t,u)
a=evalin('base','a');
%Konstanten
m=1;
x=0.32;
% a=10;

%Variablendeklaration von a fehlt hier

%zeitliche Änderung von a

 if t<0.1
    a=10;
 else
    a=a-x;
 end

%Berechnung der Ableitungen
du(1) = u(2);
du(2) = a/m;
assignin('base','a',a);
du=du';

end
Private Nachricht senden Benutzer-Profile anzeigen
 
gdow86
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 20.07.12
Wohnort: ---
Version: 7.9.0 (R2009b)
     Beitrag Verfasst am: 25.07.2012, 15:16     Titel:
  Antworten mit Zitat      
Das sieht schon mal sehr gut aus Smile

Könntest du mir jetzt vllt. kurz evalin und assignin in dem Zusammenhang erläutern? Das wäre sehr nett Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 27.07.2012, 07:27     Titel:
  Antworten mit Zitat      
Hier wird nur in einen bestimmten Workspace eine Variable rein geschrieben und dann wieder gelesen. Nicht elegant und kann auch so manches Problem mitbringen aber für deine Aufgabe hab ich hier leider keine andere Lösung gefunden ^^
Private Nachricht senden Benutzer-Profile anzeigen
 
gdow86
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 20.07.12
Wohnort: ---
Version: 7.9.0 (R2009b)
     Beitrag Verfasst am: 27.07.2012, 08:30     Titel:
  Antworten mit Zitat      
Guten Morgen Goofy,
ok dann habe ich das auch verstanden Smile

Vielen Dank für deine Hilfe Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.