簡體   English   中英

Matlab:沿3D數組的第一維進行操作

[英]Matlab: Operations along the first dimension of a 3D array

我有一個3D數組M(d * d,m,n)。 對於M的每個d * d向量(即第一維的向量),我將其分成d個部分,並取每個部分的總和形成一個新的向量(大小為d)。 例如,如果u是沿着M的第一個維度的向量,則它將被向量v代替,該向量由以下公式計算:

v = sum(reshape(u,d,d))';

目前,我使用如下循環,但是我認為應該有一種更快的方法。

N = zeros(d,m,n)
for i=1:m
    for j=1:n
        N(:,i,j) = sum(reshape(M(:,i,j),d,d))'; %//'
    end
end

非常感謝您的任何建議!

嘗試這個 -

N = reshape(sum(reshape(M,d,[])),d,m,n)

我可能沒有正確理解問題,但這是您要尋找的嗎?

N=squeeze(sum(reshape(M,[d,d,size(M,2),size(M,3)])))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM