|
Pat_ |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.10.2012, 19:52
Titel: Problem mit Matlab
|
|
Hallo zusammen,
ich bin neu hier und habe eine Frage zu meinem Programm. Irgendwie ist da noch der Wurm drin.
Also mein Problem ist, wenn du Bedingung erfüllt ist, soll er die Schleife abbrechen und die gefunden Werte in eine Liste abspeichern und ausgeben. Anschließend soll das Programm den nächsten Wert aus der Liste neben und wieder die passende Werte finden und abspeichern wenn er sie gefunden hat.
Sodass ich nach dem gesamten Durchgang meiner Eingangswerte, zwei neue Listen haben mit den zugeörigen gefunden Werten.
Im Anhang findet ihr mein Programm.
Hoffe ihr könnt mir helfen.
Mit freundlichen Grüßen
Pat_
Beschreibung: |
|
Download |
Dateiname: |
Untitled.m |
Dateigröße: |
1.64 KB |
Heruntergeladen: |
443 mal |
Beschreibung: |
|
Download |
Dateiname: |
M_value.m |
Dateigröße: |
264 Bytes |
Heruntergeladen: |
449 mal |
|
|
|
|
|
Pat_ |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.10.2012, 20:12
Titel:
|
|
Sorry, habe mich im Topic ein wenig allgemein ausgedrückt.
Es ist wohl eher ein Problem mit der Schleife und mit der Ausgabe.
Pat_
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 12.10.2012, 20:44
Titel:
|
|
Hallo,
bitte möglichst präzise sagen, wo das Problem liegt. Du hast mehrere if-Abfragen; woher soll man wissen, um welche es geht?
Code wird von MATLAB in aller Regel korrekt ausgeführt, d.h. wir müssten wissen, welche Resultate du dir vorstellst und inwiefern die erhaltenen davon abweichen.
Im übrigen kannst du auch selbst mit dem Debugger schrittweise durch den Code durchgehen und feststellen, an welcher Stelle welche Bedingungen erfüllt sind oder nicht.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Pat_ |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.10.2012, 21:01
Titel:
|
|
Ich habe gerade keinen Zugriff auf die Datei, habe nur an der Uni Matlab.
Soweit ich mich erinnere läuft zuerst die Innere Schleife. Und eigentlich wird im 2. Schritt schon die Bedingung erfüllt. Doch er bricht nicht ab, sondern läuft weiter. Außerdem möchte ich eine Ausgabe von den Werten e_c2 und e_s1 in einer Liste haben, wenn er das erste mal die Bedingung erfüllt hat. Anschließend soll er aus der Daten Liste den nächsten Wert wählen, wieder die Schleifen durchlaufen und nachdem die Bedingung erneut erfüllt ist sollen die gefundenen Werte wieder abgelegt werden.
Mein Ziel ist eine Liste mit den Werten von e_c2 und e_s1 zu erhalten für jeden einzelnen eingelesen Wert.
Hoffe ich helfe diesmal weiter.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 12.10.2012, 21:45
Titel:
|
|
Hallo,
Zitat: |
Doch er bricht nicht ab, sondern läuft weiter. |
warum soll auch abgebrochen werden? Dazu müsstest du dann eine while-Schleife verwenden, oder ein break.
Was verstehst du unter eine Liste? Ausdrucke im Command Window? Eine Variable, die diese Werte enthält?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Pat_ |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.10.2012, 21:55
Titel:
|
|
Zitat: |
warum soll auch abgebrochen werden? Dazu müsstest du dann eine while-Schleife verwenden, oder ein break. |
ein break ist doch drin
Sorry, das ich es nicht weiter erklären kann. Habe nicht alles selber programmiert. ein Kollege hat mir geholfen, den kann ich aber nicht vor Montag wieder erreichen.
Ich versuchs nochmal: Mein Ziel ist es eine Liste/Auszug (weiß nicht was möglich ist. Bin auch nicht so gewandt in Matlab).
Der mir für alle vorhandenen Eingangwerte, die zugehörigen Werte von e_c2 oder e_c1 "ausgibt". Also am besten 2 Spalten, in denen die Werte aufgelistet sind. Sodass ich sie verarbeiten kann.
Vielleicht kann mir jetzt jemand helfen und die Datei soweit erweitern, das ich mein Ziel mit der Datei erreiche.
|
|
|
dmjr |
Forum-Century
|
|
Beiträge: 199
|
|
|
|
Anmeldedatum: 02.10.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.10.2012, 22:15
Titel:
|
|
Ohne den Code wirklich verstanden zu haben, das ist Quatsch:
versuchs mal mit
Wird dir das "value=0;" nicht als unreachable code gekennzeichnet? Der springt raus und erreicht nie value=0.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 12.10.2012, 22:31
Titel:
|
|
Hallo,
ah, da unten. Mit jedem break wird eine Ebene höher gegangen, und vor allem: der unmittelbar folgende Code wird nicht ausgeführt.
Das "value = 0" (Zeile 57) müsste also vor das darüber stehende "break", wenn es noch ausgeführt werden soll. Das wird übrigens auch durch den Code Analyzer orange angezeigt.
Nur dann ist die außen liegende Bedingung "value == 0" (Zeile 63) auch mal erfüllt. In diesem if-Block würde ich aber zuvor value wieder zurücksetzen, da sonst bei den nächsten Durchläufen an dieser Stelle immer abgebrochen wird.
Eine solche Tabelle kann man z.B. mit
bekommen.
Sollte die äußere for-Schleife nicht besser über alle M-Werte, also bis
laufen?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Pat_ |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.10.2012, 11:36
Titel:
|
|
|
|
|
Zitat: |
Sollte die äußere for-Schleife nicht besser über alle M-Werte, also bis
Code:
length(M_ED)
laufen? |
Ja das haben wir erstmal fix gemacht, damit man erstmal testen kann. Weil die Liste die er auswerten soll hat bis zu 2000 Einträge.
Also danke schonmal für eure Hilfe es läuft soweit alles. (habe die laufenden Dateien nochmal hochgeladen)
Nur heut morgen ist mir ein neues Problem aufgefallen. In meinem Programm fehlt noch eine weitere Bedingung.
Nachdem er mit der ersten die Werte gefunden hat, soll er jetzt mit e_s1 noch eine 2. Bedingung überprüfen.
Zitat: |
dabei gibts es auch wieder eine Fallunterscheidung
die lauten:
if(e_s1 >=0 && e_s1 <=e_y)
S_s1=(f_ym/e_y)*e_s1;
end
if(e_s1 >=e_y && e_s1 <=e_u)
S_s1=((f_u-f_ym)/(e_u-e_y))*(e_s1-e_y)+f_ym;
end
mit der folgendes berechnet wird:
F_s1=A_s1*S_s1;
und die Bedingung die auch noch erfüllt sein muss
abs(F_s1-F_cd)<=0,1
dabei sind folgende Werte fix: (beispielhaft eingefügt)
f_ym=511.8;
f_u=588.8;
e_y=2.5;
e_u=233.3;
A_s1=0.000057;
|
kommt die zweite bedingung nicht mehr hin soll er die Berechnung abbrechen. Mir bis dahin alle Werte ausgeben und sagen 2. Bedingung nicht mehr möglich.
Könnte mir das bitte noch jemand einbauen, wie vorher schonmal gesagt. Ich kann nicht viel in Matlab, das hat mir zum größten teil ein Kollege programmiert.
Beschreibung: |
|
Download |
Dateiname: |
Untitled.m |
Dateigröße: |
1.69 KB |
Heruntergeladen: |
417 mal |
Beschreibung: |
|
Download |
Dateiname: |
M_value.m |
Dateigröße: |
264 Bytes |
Heruntergeladen: |
442 mal |
|
|
|
|
|
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 - 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.
|
|