Disons que j'ai un 3x3x3 tableau Matlab avec les membres de 1 à 27tableau Matlab subsetting par les indices
a=reshape(1:27, [3 3 3])
Je voudrais créer un sous-ensemble de cela avec une syntaxe comme
b=a(range1,range2,range3)
où pour range1 = range2 = range3 = 1: 2 j'obtiendrais les membres b(1,1,1)
et b(2,2,2)
. i.e.
b= [1 14]
Est-il possible de le faire juste avec l'indexation et sans fonctions (par exemple diag)? Merci ...
@Parag, sub2ind requiert des vecteurs de même taille pour les plages. Par exemple 'b = a (sub2ind (taille (a), plage1, plage2,1: 3))'. C'est pourquoi je cherche à le faire seulement avec les indices ... – ZZZ
@Molly s'il vous plaît voir mon commentaire à Parag au-dessus ... – ZZZ
range1, range2, et range3 doivent être de la même taille car chacun correspond à une dimension de la matrice une. Par exemple, si range1 = [x1, x2, x3], range2 = [y1, y2, y3] et range3 = [z1, z2, z3], les valeurs obtenues seront a (x1, y1, z1), a (x2 , y2, z2) et a (x3, y3, z3). Il ne serait donc pas logique que cette fonction prenne des vecteurs de tailles différentes. Dans l'exemple de votre commentaire, que faire de la réponse? – Molly