|
|
Schleife beenden bei negativem Wert |
|
grueßdichmeiner |

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 16.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.12.2011, 11:19
Titel: Schleife beenden bei negativem Wert
|
 |
Hallo,
ich habe 2 Bedingungen, die erfüllt werden sollen:
p.aD=0 und h >=0,
ich möchte, dass die rechnung beendet wird, wenn h das erste mal negativ wird.
Ich habe es bisher mit diesem code versucht:
ist nicht schön, ich weiß. Und funktioniert auch nicht.
Ich wäre für eure Hilfe sehr dankbar
|
|
|
|
|
tompie |

Forum-Guru
|
 |
Beiträge: 260
|
 |
|
 |
Anmeldedatum: 19.09.07
|
 |
|
 |
Wohnort: München
|
 |
|
 |
Version: immer alles
|
 |
|
|
 |
|
Verfasst am: 07.12.2011, 11:27
Titel:
|
 |
Hallo,
so kommst Du nie aus der while-Struktur raus, solange p.aD==0 bleibt. Vielleicht besser so:
und danach abfragen, was genau passiert ist:
Gruß tompie
|
|
|
grueßdichmeiner |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 16.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.12.2011, 11:33
Titel:
|
 |
Hallo,
danke für die schnelle Antwort; allerdings hatte ich das:
bereits probiert.
Irgendwie kommt dann folgende Fehlermeldung:
??? Operands to the || and && operators must be convertible to logical scalar values.
Error in ==> Viskoelastischer_Stoss_Hauptprogramm at 126
while p.aD==0 && h >=0
Liegt das an meiner Version?
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 07.12.2011, 14:21
Titel:
|
 |
Hallo
Was hast du denn für Matlab Version?
|
|
|
Wall-E |

Forum-Anfänger
|
 |
Beiträge: 17
|
 |
|
 |
Anmeldedatum: 21.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 07.12.2011, 15:24
Titel:
|
 |
Probiers mal mit
(Also nur ein &)
Kann es sein dass sich h und p.aD nie ändern?
Weil sonst kommst du ja gar nicht aus der Schleife raus oder?
Fallls dem nicht so ist lass ich mich gern korrigieren...
gruß Wall-E
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 07.12.2011, 19:01
Titel:
|
 |
Hallo grueßdichmeiner,
F_N= ((2/3)*p.E*(sqrt(p.r_12))*h.^(3/2)-p.F_H0);
end
[/code]
Die Meldung:
Zitat: |
??? Operands to the || and && operators must be convertible to logical scalar values. |
bedeutet, dass in
entweder p.aD oder h ein Vektor ist - oder beide.
Dann hilft es je nach Bedarf ein "any" oder "all" einzufügen.
Gruß, Jan
|
|
|
grueßdichmeiner |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 16.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.12.2011, 10:55
Titel:
|
 |
Hallo,
also h ist ein Vektor der periodisch das vorzeichen ändert, ich möchte allerdings nur berechnungen durchführen, bis h den ersten negativen wert annimmt, das wäre also nur ein Durchlauf.
Das p.aD soll vom Anwender des Programms angegeben werden... das mache ich über den input-Befehl und klappt auch gut.
Ich habe MATLAB 7.11.0 (R2010b)
|
|
|
grueßdichmeiner |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 16.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.12.2011, 11:05
Titel:
|
 |
Also ich habs jetzt auch noch mal mit any probiert, aber irgendwie fährt er sich da immer dran fest.
Falls jemand ne Idee hat, wie man das Problem anders lösen kann, dann nehme ich natürlich auch gerne andere Tipps an!
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 09.12.2011, 11:44
Titel:
|
 |
Hallo grueßdichmeiner,
Es ist immer hilfreicher, wenn Du einen lauffähigen Ausschnitt aus Deinem Code postest, die alle relevanten Variablen definiert. Eine Fehlerbeschreibung wie "irgendwie fährt er sich da immer dran fest" erlaubt es nicht, einen konkreten Verbesserungsvorschlag zu machen. Gibt es eine Fehlermeldung - welche? Stimmt das Ergebnis nicht mit den Erwartungen überein?
Wenn h ein Vektor ist, musst Du auf die einzelnen Elemente zugreifen. Dazu benötigst Du etwas wie "h(i)", wobei i der Index zwischen 1 und der Länge von h ist.
Je konkreter die Frage ist, desto weniger Zeit geht mit Raterei verloren.
Gruß, Jan
|
|
|
grueßdichmeiner |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 16.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.12.2011, 12:02
Titel:
|
 |
Hallo,
Leider habe ich keine Fehlermeldung oder Ergebnisse aus dem obrigen Quelltext; MATLAB rechnet einfach ewig rechnet und dann nicht mehr reagiert.
Also ich habe mir für mein Problem jetzt noch was anderes überlegt,
ich lösche alle negativen Werte für h aus dem Vektor h.
Das mache ich mit:
Das funktioniert auch und leifert mit für F_N die gewünschten Werte.
Allerdings hab ich jetzt das Problem, dass ich damit meinen Vektor h verkürze. Ich habe noch einen zweiten Vektor v, den ich über h auftragen will. Beide Vektoren haben ich in einer Matríx y zusammengefasst. Jetzt bräuchte ich einen Befehl mit dem ich aus der Matrix y die zu h gehörenden Werte für v auch löschen kann, damit ich v über h plotten kann.
(h ist die erste spalte von y und v die zweite)
Wie kann ich das machen?
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 09.12.2011, 12:29
Titel:
|
 |
Hallo grueßdichmeiner,
Ich verstehe immer noch nicht, was Du eigentlich machst. Das Posten von lauffähigem Matlab-Code wäre wirklich sehr viel einfacher zu lesen, als eine Text-Beschreibung.
Ich rate aber trotzdem mal, was vielleicht helfen könnte:
Wenn Du also h anpasst, kannst Du auch v anpassen.
Gruß, Jan
|
|
|
grueßdichmeiner |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 16.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.12.2011, 12:41
Titel:
|
 |
Hallo Jan,
das war genau der Befehl den ich brauchte,
funktioniert super!
DANKE
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|