Un titre, hein? Disons que j'ai une matrice de vecteurs (n X 1), A
, et une matrice de vecteurs contenant des indices dans A
, appelée B
. Je souhaite extraire un tableau de cellules, C
, tel que C{i} = [A{B{i}}]
.
En d'autres termes, j'ai une matrice de tableaux d'indices, et je veux extraire les matrices correspondant aux concaténations des vecteurs en A
indexés par chacun de ces tableaux d'indices.MATLAB: indexer un tableau de cellules avec un tableau de cellules de tableaux et retourner un tableau de cellules
for i = 1:length(B)
%# B{i} is an array of indices, C{i} is a matrix
C{i} = [ A{ B{i} } ];
end
La boucle est équivalente à:
C = cellfun(@(x)[A{x}],B,'UniformOutput',false); %# implicit for loop w/ closure
Puis-je faire en utilisant une expression d'indexation seul? Ou au moins sans la boucle? Je pense que deal()
pourrait être impliqué mais ne peut pas le comprendre.
+1 Bien se débarrasser de 'UniformOutput', 'faux'. Quelle horreur. –