Matlab for-Schleife in der anonymus-Funktion
Ich bin ziemlich neu in matlab, aber ich weiß, wie zu tun, sowohl für die Schleifen und anonyme Funktionen. Nun möchte ich diese kombinieren.
Möchte ich schreiben:
sa = @(c) for i = 1:numel(biscs{c}), figure(i), imshow(biscs{c}{i}.Image), end;
Aber das ist nicht gültig, da matlab zu wollen scheinen Zeilenumbrüche nur als Kommando-Trennzeichen. Mein code geschrieben, in einer klaren Art und Weise wäre (ohne header-Funktion):
for i = 1:numel(biscs{c})
figure(i)
imshow(biscs{c}{i}.Image)
end
Suche ich eine Lösung, wo entweder ich kann schreiben, es mit einer anonymen Funktion in einer einzigen Zeile wie in meinem ersten Beispiel. Ich wäre auch froh, wenn ich schaffen könnte, dass die Funktion eine andere Möglichkeit, so lange wie ich brauchen nicht eine neue Funktion m-file für ich.
InformationsquelleAutor Tarrasch | 2011-04-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anonyme Funktionen können mehrere Anweisungen enthalten, aber keine expliziten Schleifen oder if-Klauseln. Die mehreren Anweisungen übergeben werden, in ein cell-array und ausgewertet werden, eine nach der anderen. Zum Beispiel dieser Funktion öffnen Sie ein Bild und zeichnen einige Daten:
Dies nicht lösen das problem der loop jedoch. Glücklicherweise gibt es ARRAYFUN. Mit diesem, Sie können schreiben Sie Ihre Schleife wie folgt:
Günstig, diese Funktion gibt auch die Ausgänge des
figure
undimshow
, d.h. die jeweiligen Griffe.InformationsquelleAutor Jonas
Wenn Sie beim aufrufen dieser Funktion aus einer anderen Funktion, die Sie definieren können, es am Ende der main-Funktion .m-Datei, dann finden Sie es mit der @name-syntax. Dies funktioniert nicht von Skript-Dateien, obwohl, wie diese nicht enthalten sub-Funktionen.
Zweite Ansatz ist etwas schmutzig, aber dennoch funktionieren könnte, und ist die Verwendung von eval-STRING:
Wäre es toll, wenn die Skript-Dateien ermöglichen könnte, die definition von sub-Funktionen irgendwie, aber es ist unwahrscheinlich.
InformationsquelleAutor Alex