/ / Summieren über dem ersten 2D der 3D-Matrix - Arrays, Matlab, Matrix

Summierung über das erste 2D von 3D Matrix - Arrays, Matlab, Matrix

Angenommen, ich habe eine 3D-Matrix A von der Größe (1,2,3). So etwas wie

A(:,:,1) =
[1 2]

A(:,:,2) =
[3 4]

A(:,:,3) =
[5 6]

Wie würde ich zum Beispiel die 3 Werte finden, die sich aus der Summe der ersten beiden Dimensionen zusammensetzen.

sum(A(:,:,1)  = 3

Das obige funktioniert, aber wenn ich es für ein Array mit größeren Abmessungen versuche, sagen wir A Ist Größe (5,5,5), dann bekomme ich ein 2D-Array als Antwort zurück, aber ich möchte, dass ein einzelner Wert den Wert dieses Arrays aufsummiert.

Antworten:

2 für die Antwort № 1

Versuchen reshape in deinem sum So fügen Sie jede 2D-Matrix in eine einzige Spalte ein:

sum(reshape(A,[],size(A,3)))

Beispielsweise:

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

Unsere könnten Sie tun sum(sum(...)).

BEARBEITEN: Verallgemeinert mit size(A,3).


1 für die Antwort № 2

Das Matlab sum() Funktion hat eine sum(A,dim) Aufrufformular, mit dem Sie entlang einer bestimmten Dimension arbeiten können. Du könntest es also tun sum(sum(A,1),2). Dies würde ein 1 x 1 x 3-Array erzeugen, das "s" istdas Ergebnis der Summierung entlang der ersten zwei Dimension. Sie können dies auf andere Dimensionen verallgemeinern und die Ausgabe nach Ihren Wünschen umformen. Basierend auf Ihrer Beschreibung sieht es so aus, als ob das Problem darin liegt, dass Sie sich darin befinden sum() Es kann jeweils nur entlang einer Dimension gearbeitet werden, und standardmäßig die erste Dimension, und nicht alle bis auf die letzte Dimension in einem mehrdimensionalen Array.