|
|
einfache for-schleife erzeugt recursionfehler? |
|
neuern223 |

Forum-Newbie
|
 |
Beiträge: 2
|
 |
|
 |
Anmeldedatum: 06.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.11.2009, 15:12
Titel: einfache for-schleife erzeugt recursionfehler?
|
 |
Hi,
ich wollte ein Programm schreiben, dass bei einer gegebenen Matrize den Maximalwert (größter Zahleneintrag) ermittelt.
Das ganze schaut bei mir so aus:
function minmax = Matrixvergleich(A);
A = [3,4;2,9;1,8];
header (Matrixvergleich);
minA = A(1,1);
maxA = A(1,1);
m = size(A,1);
n = size(A,2);
for ii = 1:m;
for jj = 1:n;
if A(ii,jj) > maxA ...
maxA = A(ii,jj);
end
end
end
disp(['Das groeßte Element ist :' num2str(maxA)]);
Wenn ich die function ausführen will, gibt mir Matlab jedoch einen Fehler aus:
"Maximum recursion limit of 500 reached"
Woran könnte das liegen?
lg
|
|
|
|
|
Bijick |

Ehrenmitglied
|
 |
Beiträge: 914
|
 |
|
 |
Anmeldedatum: 18.06.07
|
 |
|
 |
Wohnort: Nürnberg
|
 |
|
 |
Version: R2006b, R2008b
|
 |
|
|
 |
|
Verfasst am: 06.11.2009, 15:27
Titel:
|
 |
Hallo neuern223,
das Problem ist die Zeile
Die Funktion header kenne ich nicht, aber vermutlich möchtest Du die Überschrift "Matrixvergleich" erzeugen. Das geht eher so:
Durch Deine Zeile wird die Funktion Matrixvergleich immer wieder rekursiv aufgerufen, ohne dass sich etwas ändert. Irgendwann (nach 500 Mal) wird das Matlab zu oft und die Fehlermeldung erscheint.
Herzliche Grüße
Bijick
PS1: Bitte benutze in Zukunft die Code-Umgebung (siehe den Button über dem Eingabefenster).
PS2: Dir ist vermutlich klar, dass Du den Wert auch so bekommst
_________________
>> why
|
|
|
derOli |

Forum-Meister
|
 |
Beiträge: 579
|
 |
|
 |
Anmeldedatum: 19.03.08
|
 |
|
 |
Wohnort: Leipzig
|
 |
|
 |
Version: 2010a
|
 |
|
|
 |
|
Verfasst am: 06.11.2009, 15:30
Titel:
|
 |
Hi, das liegt an der 3. Zeile, da steht: header(Matrixvergleich);
Ich kenne diesen Befehl nicht, mein Matlab kennt ihn nicht. Aber dort wird immer wieder die Funktion Matrixvergleich aufgerufen und irgendwann ist halt das Rekursionslimit erreicht. Also einfach mal weglassen.
Aber mal allgemein zu dem Program, ist das nur ein Lernbeispiel.
Weil maximum finden geht ja ganz einfach mit max bzw. max(max(A)).
Viele Grüße,
der Oli
|
|
|
neuern223 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 2
|
 |
|
 |
Anmeldedatum: 06.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.11.2009, 15:31
Titel:
|
 |
Aah - da hab ich wohl die Anführungszeichen vergessen.
Vielen Dank!
(jap, dass ich die Ausgabe auch einfach mit max(A) erzeugen kann, weiß ich - aber zu Übungszwecken sollten wir das Ganze mal selbst "entwerfen" )
lg neuern
|
|
|
|
|
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.
|
|