Verfasst am: 11.07.2012, 08:53
Titel: Function neu starten bei Fehlermeldung
Hallo ih Lieben,
ich habe mal wieder eine Frage.
Ich habe eine Funktion geschrieben, die in einer For-Schleife eingebettet ist.
Mitten in dieser Funktion wird mittels eine if - Schleife geprüft, ob der Wert vorhanden ist. Wenn dies nicht der Fall ist, dann kommt eine Fehlermeldung und die Funktion soll wieder neu starten.
Soweit, so gut.
Problem ist jetzt nur, dass wenn die Funktion neu gestartet wird, auch Matlab bei der For-Schleife wieder bei "1" beginnt, er soll aber, wenn bei "1" die Fehlermeldung kommt mit der Funktion bei "2" beginnen.
for p = 1:length(NRG_Temp_Stationen)% Das ist die For-Schleife, die um die ganze Funktion gelegt ist
NRG01 = NRG_Temp_Stationen(p,1);
%[.....] --> hier fehlt ein Teil des Codes, der uninteressant ist
% Hier nun der interessante Teil: % Matlab soll was suchen und das dann ausgeben
xyz = find(NRG1_PH1(:,1)==NRG_Temp_Stationen(p,2));
for i = 1:length(xyz)
Station1(i,1:8)=NRG1_PH1(xyz(i,1),1:8);
end
% Schlecht ist, wenn mein xyz leer ist,dann kommt die Fehlermeldung
A = isempty(xyz);
if A==1 disp 'ABBRUCH! Station 1 nicht vorhanden'
NRG01
Temperatur_Auswertung_Fruehling
% --> hier soll neu mit der Funktion begonnen werden, allerding diesmal nicht mit p=1, sondern p=2 end
%[.....] --> hier fehlt ein Teil des Codes, der uninteressant ist
oder du rufst die Funktion nicht neu auf sondern machst einfach nichts wenn in xyz steht und lässt die for Schleife weiterlaufen bis etwas in xyz steht.
Wieso willst du eigentlich in einer for Schleife einen rekursiven Aufruf machen?
Gruß Goofy
Claudi
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 11.07.2012, 10:57
Titel:
mmmh ....
wenn ich das mit dem startvalue mache, dann habe ich doch aber das gleiche problem, oder?
dann muss ich ja in meiner if Bedingung irgendwie auch reinschreiben, dass mein startvalue nicht 1 ist sondern bspw 2
geht das dann einfach so:
Code:
if A==1 disp 'ABBRUCH! Station 1 nicht vorhanden'
NRG01
Temperatur_Auswertung_Fruehling
startvalue = startvalue +1% neu!!!!!!!!!!
im Funktionsaufruf musst du dann den Startwert übergeben
Code:
if A==1 disp 'ABBRUCH! Station 1 nicht vorhanden'
StartValue = StartValue +1;
NRG01
Temperatur_Auswertung_Fruehling(neuerStartwert) % --> hier soll neu mit der Funktion begonnen werden, allerding diesmal nicht mit p=1, sondern p=2 end
Die Gefahr bei der Rekursion ist der Speicher, weil er ja jedes Mal die Daten anlegt und die alten aber im Speicher behält.
Wenn das kein Problem macht kannst du es aber auch so machen.
Sonst die if Bedingung einfach über die ganze weiter Berechnung drüber geben (Das Wort end, am Ende hinsetzten) und dann sollte es eigentlich ohne viel herum stellen auch klappen
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
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.