2012-10-07 10 views
5

Ich habe eine Funktion, die varargin als Eingabe verwendet, aber wenn ich diese Funktion aufrufen muss, erstelle ich mehrere Matrizen, und es ist sehr ineffizient, sie alle im Befehlsfenster einzugeben.Eingabe mehrerer varargin-Argumente

Zuerst verwende ich eine Funktion, die zum Beispiel 50 2x2 Matrizen erstellt. Und wenn ich diese andere Funktion verwenden muss, muss ich nacheinander anrufen, zum Beispiel: rich(A(:,:,1), A(:,:,2), (...), A(:,:,50))

Gibt es eine einfachste Möglichkeit, diese Matrizen ohne die Notwendigkeit, nacheinander zu tippen? So etwas wie rich(A(:,:,1:50) or rich(A(:,:,1):A(:,:,50)) (Ich weiß, das ist nicht möglich, aber ich war für so etwas suchen ...)

Antwort

5

Try this:

%# random matrix of size 2x2x50 
A = rand(2,2,50); 

%# split by slices along the third dimension: AA = {A(:,:,1); ...; A(:,:,50)} 
AA = mat2cell(A, 2, 2, ones(1,size(A,3))); 
AA = AA(:); 

%# call function, expanding into a comma-separated list 
rich(AA{:}) 
+0

Hier ist ein Link auf die entsprechenden Dokumente ist: [Comma-Separated Listen] (http://www.mathworks.com/help/matlab/matlab_prog/comma-separated-lists.html) – Amro

Verwandte Themen