2012-10-07 31 views
5

Tengo una función que usa varargin como su entrada, pero cuando tengo que llamar a esta función, creo varias matrices, y es muy ineficiente escribirlas todas en la ventana de comandos.Escribiendo varios argumentos varargin

Primero uso una función que crea, por ejemplo, 50 matrices de 2x2. Y cuando tengo que usar esta otra función, tengo que llamar uno por uno, por ejemplo: rich(A(:,:,1), A(:,:,2), (...), A(:,:,50))

¿Existe una manera más fácil de llamar estas matrices sin la necesidad de escribir una por una? Algo así como rich(A(:,:,1:50) or rich(A(:,:,1):A(:,:,50)) (Sé que esto no es posible, pero yo estaba buscando algo como esto ...)

Respuesta

5

Prueba esto:

%# 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

Aquí hay un enlace a los documentos pertinentes: [separada por comas Listas] (http://www.mathworks.com/help/matlab/matlab_prog/comma-separated-lists.html) – Amro