2016-11-15 9 views
0

Wenn ich ein bestimmtes Element einer Matrix zugreifen möchten, verwende ich die Indizierung mit Klammern:Wie indexiert man eine temporäre Matrix?

m = calc_stuff(...); 
x = m(index1, index2); 

Allerdings möchte ich zu oft tun, dass in einer Zeile Code, wie folgt aus:

x = calc_stuff(...)(index1, index2); 

Wie kann ich es ausdrücken?

Ein konkretes Beispiel:

m = cumsum(rand(10,4)); 
x = m(10, 1); 

Das obige Skript berechnet einige Summen von Zufallsvariablen, und ich nehme dann ein Beispiel Wert aus der Ergebnismatrix.

Wie könnte ich es als eine Zeile schreiben? Die folgende funktioniert nicht:

x = cumsum(rand(10,4))(10, 1); 

Error:()-indexing must appear last in an index expression.

Hier habe ich eine allgemeine Syntax wollen, die für eine Berechnung anwendbar ist, nicht notwendigerweise denen Zufallsvariablen.

+0

Octave ermöglicht dies, aber in Matlab müssen Sie 'subsref' verwenden. Unter @Sardar_Usama finden Sie eine vollständige Erklärung –

Antwort

0

Sie können die "Funktional Programming Constructs" auf der FileExchange überprüfen.

Vor allem die Datei paren.m tut, was Sie brauchen. So würden Sie

x = paren(cumsum(rand(10,4)), 10, 1); 

schreiben Vielleicht nicht so elegant wie die direkte „()“ Notation, aber das ist nicht in MATLAB in der Art und Weise unterstützt Sie möchten, es zu benutzen.

Verwandte Themen