/ / Sommation sur la première 2D de la matrice 3D - matrices, matlab, matrice

Résumé sur la première matrice 2D en 3D - matrices, matlab, matrice

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 № 1

Essayer 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.