2017-09-25 110 views
0

有沒有方法向量化下面的代碼?我想將histcounts函數應用於3D矩陣的每個切片。MATLAB:三維矩陣的每個切片的總計數

mat = rand(100,1,5); 
[~,~,numRuns] = size(mat); 
for i = 1 : numRuns 
    [n(:,:,i), edges(:,:,i)] = histcounts(mat(:,:,i)); 
end 

回答

0

如果您確實需要爲每次運行單獨的直方圖,那麼就像這樣。爲什麼你甚至想要矢量化它?這很容易閱讀,這很重要。 (您可以用cellfun對其進行矢量化處理,但在這種情況下,它會變得複雜,甚至不會更快)。如果要提高計算速度,請使用parfor而不是for

但也許你想要一個所有數據的直方圖。然後,只需做

[N,edges] = histcounts(mat); 

和你有你的整體直方圖。