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

Funktion beenden und Werte speichern?

 

PiBi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.08.2011, 13:24     Titel: Funktion beenden und Werte speichern?
  Antworten mit Zitat      
Hallo an alle!

Ich habe ein Problem bei der Programmierung eines Algorithmus.

Die Struktur soll sein wie folgt:

Code:

while(true)
if (x==a)
  do case1;
else
  do calculations2
  return result;
end
return calculations2;
end
 


Soll heißen, dass ich in einem bestimmten Fall meiner Berechnungen diese speichern und zurückgeben will und außerdem die Funktion beenden möchte, da sonst weitere Schleifen-Durchläufe stattfinden. Trifft dieser Fall nie ein, wird ein anderer Wert zurückgegeben und das Programm wird beendet.

Versucht habe ich es mit return, also

Code:

function P=process(A,B,X)
if (X==a)
  (Berechnungen vornehmen)
if (X==b)
  P=irgendwas;
  return;
end
P=irgendwas_anderes;
return;
end
 


Mein Problem ist nun, dass alle berechneten Werte dieser Funktion (in diesem Fall P) verloren gehen, sobald return ausgeführrt wird. Ich brauche diese Werte aber für weitere Berechnungen.

Wie schaffe ich es, meine Funktion für einen speziellen Fall zu beenden, sodass auch alle berechneten Werte zurückgegeben werden?

Vielen Dank für eure Hilfe!
PiBi


mawi
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 14.04.11
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 10.08.2011, 14:12     Titel:
  Antworten mit Zitat      
Hallo PiBi,

soweit ich weiss geht das nicht.

Das Einzige was mir dazu einfallen würde wäre alles in eine While-Schleife zu schreiben, die nur einmal durchlaufen wird.
Diese kannst du ja überall mit break abbrechen, die Funktion wird aber trotzdem ordnungsgemäß abgeschlossen

Nicht schön, aber müsste gehen.

Gruß mawi
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.08.2011, 14:25     Titel:
  Antworten mit Zitat      
Verstehe ich nicht, bei mir funktioniert es

Code:

function P=process(X)
if (X==1)
  P=1;
  return;
end
if (X==2)
  P=2;
  return;
end
P=3;
end
 


Zitat:

process(1)

ans =

1


process(2)

ans =

2

process(598)

ans =

3

 
PiBi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.08.2011, 14:43     Titel:
  Antworten mit Zitat      
Danke soweit für eure Hilfe! Da es 1:1 steht, bin ich etwas verwirrt, ob es jetzt funktioniert oder nicht.

Aber da es zumindest einmal zu funktionieren scheint, werde ich meinen Fehler wohl woanders suchen müssen. Auf jeden Fall vielen Dank!
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 10.08.2011, 17:18     Titel:
  Antworten mit Zitat      
Evtl. ist es ja hier nur im Bsp. so...

aber A ist nicht a. A und B werden der Funktion übergeben und a und b werden also Bedingung für Anweisungen genommen. Allerdings müsste dann eigentlich auch ein Fehlermeldung 'unkown a and b' oder so ähnlich erfolgen, wenn a und b nicht im Worspace stehen oder in der Funktion definiert werden.
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 - 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.