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

Problem mit Matlab

 

Pat_

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.10.2012, 19:52     Titel: Problem mit Matlab
  Antworten mit Zitat      
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_

Untitled.m
 Beschreibung:

Download
 Dateiname:  Untitled.m
 Dateigröße:  1.64 KB
 Heruntergeladen:  443 mal
M_value.m
 Beschreibung:

Download
 Dateiname:  M_value.m
 Dateigröße:  264 Bytes
 Heruntergeladen:  449 mal


Pat_

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.10.2012, 20:12     Titel:
  Antworten mit Zitat      
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

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.10.2012, 20:44     Titel:
  Antworten mit Zitat      
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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Pat_

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.10.2012, 21:01     Titel:
  Antworten mit Zitat      
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

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.10.2012, 21:45     Titel:
  Antworten mit Zitat      
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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Pat_

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.10.2012, 21:55     Titel:
  Antworten mit Zitat      
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

Forum-Century


Beiträge: 199
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.10.2012, 22:15     Titel:
  Antworten mit Zitat      
Ohne den Code wirklich verstanden zu haben, das ist Quatsch:
Code:

versuchs mal mit
Code:

Wird dir das "value=0;" nicht als unreachable code gekennzeichnet? Der springt raus und erreicht nie value=0.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.10.2012, 22:31     Titel:
  Antworten mit Zitat      
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
Code:
[Es1', Ec2']

bekommen.

Sollte die äußere for-Schleife nicht besser über alle M-Werte, also bis
Code:

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Pat_

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.10.2012, 11:36     Titel:
  Antworten mit Zitat      
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.

Untitled.m
 Beschreibung:

Download
 Dateiname:  Untitled.m
 Dateigröße:  1.69 KB
 Heruntergeladen:  417 mal
M_value.m
 Beschreibung:

Download
 Dateiname:  M_value.m
 Dateigröße:  264 Bytes
 Heruntergeladen:  442 mal
 
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.