Hallo, gibt es eine einfache Möglichkeit nur einen Teil der Antworten einer Matlabfunktion zu übernehmen? Zur Verdeutlichung meiner Frage folgendes Beispiel: Wenn ich in einem Matlabskript (M-file) die Funktion sin(0:0.1:1) aufrufe erhalte ich als Ergebnis einen Vektor mit 10 Elementen ans = Columns 1 through 5 0.0000e-003 99.8334e-003 198.6693e-003 295.5202e-003 389.4183e-003 Columns 6 through 10 479.4255e-003 564.6425e-003 644.2177e-003 717.3561e-003 783.3269e-003 Column 11 841.4710e-003. Von diesem Vektor benötige ich jedoch im Weiteren Verlauf nur das z. B. fünfte Element. Bisher habe ich in einem derartigen Fall die Antwort von sin(0:0.1:1) in einen Vektor geschrieben Antwort = sin(0:0.1:1) und anschließend das fünfte Element ausgewählt Antwort = Antwort(5). Leider macht dies das Matlabskript nicht verständlicher. Insbesondere dann, wenn 'Antwort' nur ein Mal in einem größeren Ausdruck weiterverarbeitet wird. In diesem Fall wäre es z. B. anschaulicher sin(0:0.1:2)(5) schreiben zu können. Bietet Matlab hierfür eine entsprechende Syntax. Das hier gezeigte Beispiel dient nur der Veranschaulichung. Mir ist natürlich klar, dass ich auch 'sin(0.4)' schreiben könnte. Es gibt jedoch auch Funktionen, die mehrer unterschiedlich Werte zurückgeben, von denen man teilweise nur einen Wert benötigt. Mit freundlichen Grüßen Guido
Dir gefällt also die Ausgabe der Funktion f() nicht und möchtest also eine Matlab-Syntax, die dir diesen Schönheitsfehler beseitigt? Wie sinnfrei ist das denn bitte? Schreib die Funktion nach deinen Vorstellungen um, oder extrahiere das Ergebnis. Andernfalls ist dem Syntax-Urwald keine Grenze mehr gesetzt....
Hallo, ich schrieb: > Dir gefällt also die Ausgabe der Funktion f() nicht und möchtest also > eine Matlab-Syntax, die dir diesen Schönheitsfehler beseitigt? Wie > sinnfrei ist das denn bitte? Vielleicht ist das folgende Beispiel besser: Wenn ich von einer bestehenden Grafikdatei nur die Colormap übernehmen möchte kann ich wie folgt vorgehen: [X, map] = imread(...); colormap(map); clear X; Manchmal würde ich es als angenehm empfinde statt dessen colormap(imread(...)(2)); schreiben zu können. Wäre dies wirklich so sinnfrei? Naja, wir können natürlich darüber diskutieren wie sinnfrei es ist die Colormap einer anderen Grafikdatei zu übernehmen ;-) ich schrieb: > Schreib die Funktion nach deinen > Vorstellungen um, oder extrahiere das Ergebnis. Klar kann ich über jede Funktion noch eine weitere Funktion "stülpen". Allerdings macht dies den Code für andere nicht unbedingt lesbarer. Mit freundlichen Grüßen Guido
> Klar kann ich über jede Funktion noch eine weitere Funktion "stülpen". > Allerdings macht dies den Code für andere nicht unbedingt lesbarer. das > colormap(imread(...)(2)); ist aber für andere auch nicht lesbarer als > [X, map] = imread(...); > colormap(map); > clear X;
was hindert dich daran, in deiner berechnung gleich den sinuswert von 0.5 zu verwenden? also: antwort=sin(0.5)
sin(0.5) ist falsch. Das ist auch schon ein gutes Beispiel dafür warum es manchmal sinnvoller sein kann etwas umständlicher, aber nachvollziehbarer auszudrücken, statt durch vermeintliche Abkürzungen zu vereinfachen. Justus Skorps schrieb: > das >> colormap(imread(...)(2)); > ist aber für andere auch nicht lesbarer als >> [X, map] = imread(...); >> colormap(map); >> clear X; Ersteres ist ein geschlossener Ausdruck; letzteres vermüllt zwei globale Variablen.
Octave unterstützt übrigens die gewünschte Syntax vielleicht daher der Wunsch es auch im Matlab zu haben?
Hallo, vielen Dank für Eure Antworten. Allem Anschein nach unterstützt Matlab meinen Wunsch (noch?) nicht. Ich werde daher bei Konstrukten der Art [X, map] = imread(...); colormap(map); clear X; bleiben. Zumindest kann dies jeder Kundige verstehen. Octave kenne ich noch nicht. Es ist aber interessant zu wissen, dass dies dort unterstützt wird. Dies zeigt mir doch, dass mein Anliegen nicht ganz so "sinnfrei" ist. Mit freundlichen Grüßen Guido
Das das nicht geht wundert mich auch. Schreib das doch mal dem Mathworks Support, die sind da gelegentlich sehr flexibel.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.