2012-10-09 6 views
2

J'ai un tableau de cellules C contenant 380 matrices et je veux les mettre dans la matrice tridimensionnelle M de telle sorte que les 20 premières matrices de C soient dans M (:,:, 1), les 2ièmes 20 matrices (de 21 à 40) dans M (:,:, 2) et ainsi de suite.extraire et stocker des matrices dans Matlab

Éditer: Je veux les concaténer par colonne. Est-ce que je peux le faire dans une boucle unique dans Matlab?

+0

Voulez-vous concaténer 20 matrices rowwise ou en colonne? – petrichor

+1

vous avez la bonne idée, enveloppez-le simplement dans une boucle for 'for i = 1: 20: 380' et utilisez l'opérateur d'assignation indexée comme vous l'avez montré dans votre question pour organiser les éléments comme vous le souhaitez. Si les dimensions ne sont pas si nettes, vous devrez peut-être imbriquer une boucle pour traiter les 20 matrices individuelles 'pour j = 1: 20' et les placer dans les bonnes positions –

Répondre

6

Vous ne même pas besoin d'une boucle pour que:

%# C: cell array with 380 elements 

%# reshape C to 20x1xn 
C = reshape(C,20,1,[]); 

%# create matrix M 
M = cell2mat(C); 
Questions connexes