Bonjour chère communauté,
Je veux remplacer des boucles 'for' dans une fonction par la fonction 'cellfun' dans Matlab:
Voici ma fonction avec des boucles 'for':
la fonction reçoit par exemple un double array de taille 2600x128x9 et le convertit en cell array de taille 2600x1. Chaque cell dans la sortie est un cell array contenant une matrice de taille 9x128 (en gros je réorganise selon cette figure)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 function data_cell = convert_to_cell_for(stacked_data) % la fonction recoit un double array de taille [m,n,p] et le transforme % en cell array de taille [m,1]. Chaque cell contenant un cell array de % taille [p,n] [m,~,p]=size(stacked_data); % inti output data_cell=cell(m,1); % iterate over m for i=1:m mat=[]; % iterate over p for j=1:p mat=[mat;stacked_data(i,:,j)]; end % allocate matrix converted to cell array to each cell in the % output data_cell{i}=num2cell(mat); end end
La fonction en haut produit la sorite souhaitée mais je voudrais réaliser la même sortie avec 'cellfun' sans utiliser de for loops:
Merci beaucoup
Partager