从数字矩阵创建直方图矩阵

时间:2012-01-16 10:33:31

标签: matlab histogram vectorization

我有一个值为1到32的矩阵,我需要创建一个直方图矩阵,使得(i,j)直方图由零组成,除了它在(i,j)上有1。我可以用循环来做这个,但有没有办法对这个操作进行矢量化?

以下是带循环的变体:

hist = zeros(size(a,1),size(a,2), 32);
for i = 1 : size(a, 1)
    for j = 1 : size(a, 2)
        hist(i,j,a(i,j)) = 1
    end
end

1 个答案:

答案 0 :(得分:1)

您可以使用accumarray

执行此操作
[y x]=ndgrid(1:size(a,1),1:size(a,2));
hist=accumarray([y(:) x(:) a(:)],1);