假設我有一個尺寸爲(1,2,3)的3D矩陣A
。類似於3D矩陣的第一個2D求和
A(:,:,1) =
[1 2]
A(:,:,2) =
[3 4]
A(:,:,3) =
[5 6]
例如,我該如何去查找構成前兩個維度總和的3個值。
sum(A(:,:,1) = 3
以上的作品,但是當我嘗試它具有更大尺寸的陣列,說A
是大小(5,5,5),然後我得到一個二維數組追溯到一個答案,但我希望有一個單一的值總結該數組的值。
假設我有一個尺寸爲(1,2,3)的3D矩陣A
。類似於3D矩陣的第一個2D求和
A(:,:,1) =
[1 2]
A(:,:,2) =
[3 4]
A(:,:,3) =
[5 6]
例如,我該如何去查找構成前兩個維度總和的3個值。
sum(A(:,:,1) = 3
以上的作品,但是當我嘗試它具有更大尺寸的陣列,說A
是大小(5,5,5),然後我得到一個二維數組追溯到一個答案,但我希望有一個單一的值總結該數組的值。
嘗試reshape
你sum
裏面把每個二維矩陣成一列:
sum(reshape(A,[],size(A,3)))
例如:
>> 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
我們,你可以做sum(sum(...))
。
編輯:概括爲size(A,3)
。
Matlab的sum()
函數有一個sum(A,dim)
調用窗體,可以讓您沿着給定維度進行操作。所以你可以做sum(sum(A,1),2)
。這將產生一個1×1×3的陣列,這是沿着前兩維求和的結果。您可以將其推廣到其他維度,並根據需要重新整形輸出。根據您的描述,看起來您正在運行的問題是sum()
一次只能沿一個維度運行,並且默認情況下爲第一維度,而不是多維數組中的最後維度。
@ user1431626我修正了這個命令,因此它被推廣了,當'size(A,3)'是任意數字時,不僅僅是3。 – chappjc