MATLAB:3D矩阵的每个切片的Histcounts

时间:2017-09-25 10:17:00

标签: matlab multidimensional-array histogram

有没有办法对下面的代码进行矢量化?我想将histcounts函数应用于3D矩阵的每个切片。

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

1 个答案:

答案 0 :(得分:0)

如果你真的需要每次运行一个单独的直方图,那么就这样吧。为什么你甚至想要矢量化它?它易于阅读,而且非常重要。 (您可以使用cellfun对其进行矢量化,但在这种情况下,它会很复杂甚至更快。)如果您想提高计算速度,请使用parfor代替for

但也许您想要所有数据的直方图。然后就做

[N,edges] = histcounts(mat);

你得到了你的整体直方图。