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

Schleife beenden bei bestimmtem Wert

 

Basel
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 19.12.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2007, 18:35     Titel: Schleife beenden bei bestimmtem Wert
  Antworten mit Zitat      
Ciao,
ich habe gerade erst mit Matlab angefangen und hoffe das mein Problem für euch leicht zu beantworten ist.
Ich habe zunächst aus mehreren Messpunkten die jeweiligen Steigungen berechnet. Danach habe ich die mit

[haeufigkeit, steig_log]=hist(steigung_log, 25)
k=0;
for k = 1 : length(haeufigkeit)
if haeufigkeit(k) == max(haeufigkeit)
MaxSteigung = steig_log(k)
end
end

mir die Häufigkeiten der Steigungen berechnet und daraus die maximale Steigung.

Ich möchte jetzt die End- und Anfangswerte berechnen(ausgeben lassen), die zu dieser Steigung gehörten.
Bzw. ich möchte eine Gerade in meinen späteren Plot zeichnen, die die Lage der max. Steigung wiedergibt.
Mein Versuch dazu sieht so aus:

% Finden der Setzungen und Zeiten zur maxSteigung

Steigung = 1;
k=1;
while Steigung <= MaxSteigung
Steigung = (s_spez(k+1)-s_spez(k))/(t_stufen_log(k+1)-t_stufen_log(k))
k = k+1;
if value(Steigung) == value(MaxSteigung)
break
end
end

s_spez_1 = s_spez(k) % Anfangswert y
s_spez_2 = s_spez(k+1) % Endwert y
t_log_1 = t_stufen_log(k) % Anfangswert x
t_log_2 = t_stufen_log(k+1) % Endwert x

Ich habe mit while Steigung <= MaxSteigung versucht die Iteration aufzuhalten wenn der Wert der Steigung dem des MaxSteigung (hier 13,5)entspricht. Matlab rechnet aber 13,5 (bzw 13) Iterationen.
Wie kann ich also die Schleife abbrechen, wenn der Wert gleich ist?????

Danke für die Hilfe!!!
Private Nachricht senden Benutzer-Profile anzeigen


Babel42
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 05.10.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.12.2007, 09:48     Titel:
  Antworten mit Zitat      
Ich hoffe ich hab dein Problem richtig verstanden...
Macht die Schleife nun einen Durchlauf zu viel oder einen zu wenig?
Für den Fall, dass eine Iteration zu viel berechnet wurden brauchst du nur theoretisch das '=' weg machen:

while Steigung < MaxSteigung

Bei größer könntest du zu MaxSteigung einen passenden Betrag hinzu addieren.
Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 20.12.2007, 09:55     Titel:
  Antworten mit Zitat      
Wie schon babel42 schrieb: In Deinem Falle ist die WHILE-Schleife dir richtige Wahl.

Des weiteren kann die Schleife (sowohl FOR als auch WHILE) mit der Funktion BREAK sofort verlassen werden.


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Basel
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 19.12.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.12.2007, 15:42     Titel:
  Antworten mit Zitat      
Erstmal Danke für die schnelle Hilfe!

Allerdings läuft die Iteration trotz '<' ein mal zu oft, ab.

Aber vieleicht liegt es daran, dass ich im vorherigen Schritt, bei der Berechnung der Häufigkeit, die Steigungen in 25 gleiche Schrittweiten eingeteilt habe. Dadurch erhalte ich ja Steigungen und eine MaxSteigung, deren Wert nicht gleich dem Wert der Iterativen Berechnung der Steigung ist. (Ist das einigermaßen verständlich ausgedrückt ? Confused )

Vieleicht kann er dann nicht abbrechen, da die Werte nicht exakt übereinstimmen und bricht erst ab, wenn der Wert den MaxSteigungswert überschreitet.

Neue Frage: Gibt es in Matlab den Befehl "ungefähr (gleich dem Wert)"???


Gruß Basel
Private Nachricht senden Benutzer-Profile anzeigen
 
Babel42
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 05.10.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.12.2007, 16:31     Titel:
  Antworten mit Zitat      
Hallo Basel,
also ungefähr der gleiche Wert würde vielleicht bedeuten:

Steigung < x && Steigung > y

Du kannst aber auch die Abbruchbedingung ändern so dass z.B.


Steigung < (maxSteigung - x)

ist. x mußt du nach deinen Steigung-Werten auswählen. So wird maxSteigung kleiner und deine Schleife eher beendet. Eine andere Möglichkeit wäre, du speicherst den Wert, um welchen steigung in der letzten Iteration erhöht wurde. Und subtrahierst ihn nach der Schleife wieder. Aber das scheint mir weniger elegant.
grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 20.12.2007, 16:34     Titel:
  Antworten mit Zitat      
Zitat:
Gibt es in Matlab den Befehl "ungefähr (gleich dem Wert)"???


sowas gibt es in keine Programmiersprache, aber du kannst doch den Bereich definieren, zB. Du vergleichst den aktuellen Wert ob der größer als 4.5 und kleiner als 5.5, wenn Du "ungefähr" 5 suchst...


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Basel
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 19.12.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.12.2007, 16:37     Titel:
  Antworten mit Zitat      
Danke schön! Das hilft mir!
Das geht hier ja schnell mit dem Beantworten.
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.