Supposons que j'ai une matrice 3D A
de taille (1,2,3). Quelque chose comme
A(:,:,1) =
[1 2]
A(:,:,2) =
[3 4]
A(:,:,3) =
[5 6]
Comment pourrais-je trouver les 3 valeurs qui composent la somme des deux premières dimensions, par exemple.
sum(A(:,:,1) = 3
Ce qui précède fonctionne, mais lorsque je l’essaie pour un tableau de plus grandes dimensions, disons A
is size (5,5,5), alors je récupère un tableau 2D comme réponse, mais je veux une valeur unique résumant la valeur de ce tableau.
Réponses:
2 pour la réponse № 1Essayer reshape
à l'intérieur de votre sum
mettre chaque matrice 2D dans une seule colonne:
sum(reshape(A,[],size(A,3)))
Par exemple:
>> A = randi(3,2,3,3)
A(:,:,1) =
1 3 1
2 2 1
A(:,:,2) =
1 2 2
1 2 3
A(:,:,3) =
2 2 1
3 3 3
>> sum(reshape(A,[],size(A,3)))
ans =
10 11 14
Notre vous pourriez faire sum(sum(...))
.
MODIFIER: Généralisé avec size(A,3)
.
1 pour la réponse № 2
Le matlab sum()
la fonction a sum(A,dim)
formulaire d’appel qui vous permet d’opérer le long d’une dimension donnée. Alors tu pourrais faire sum(sum(A,1),2)
. Cela produirait un tableau 1 sur 1 sur 3 qui "sle résultat de la somme des deux premières dimensions. Vous pouvez généraliser cela à d'autres dimensions et remodeler la sortie comme bon vous semble. Selon votre description, il semble que le problème que vous rencontrez est le suivant: sum()
Ne fonctionne que sur une dimension à la fois, et par défaut sur la première dimension, au lieu de la totalité sauf la dernière dans un tableau multidimensionnel.