Es ist tatsächlich es Es ist möglich, das zu tun, was Sie wollen, aber Sie müssen die funktionale Form des Indizierungsoperators verwenden. Wenn Sie eine Indizierungsoperation durchführen, indem Sie ()
machen Sie eigentlich einen Aufruf an die subsref
Funktion. Auch wenn Sie also kann nicht dies tun:
value = magic(5)(3, 3);
Sie kann dies tun:
value = subsref(magic(5), struct('type', '()', 'subs', {{3, 3}}));
Hässlich, aber möglich. ;)
Im Allgemeinen müssen Sie nur den Indizierungsschritt in einen Funktionsaufruf umwandeln, damit Sie nicht zwei Sätze von Klammern unmittelbar hintereinander haben. Eine andere Möglichkeit, dies zu tun, wäre die Definition einer eigenen anonyme Funktion um die tiefgestellte Indizierung durchzuführen. Zum Beispiel:
subindex = @(A, r, c) A(r, c); % An anonymous function for 2-D indexing
value = subindex(magic(5), 3, 3); % Use the function to index the matrix
Letzten Endes ist die Lösung mit den temporären lokalen Variablen jedoch viel besser lesbar, und das würde ich auf jeden Fall vorschlagen.