2012-01-16 122 views
2

我有一个矩阵的值从1到32,我需要创建一个直方图的矩阵,使得(i,j)直方图将由零组成,除了它将具有1在(i,j)上。我可以用循环来做到这一点,但是有没有一种方法可以将此操作矢量化?从数字矩阵创建直方图的矩阵

这里是循环的变种:

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

你可以做到这一点与accumarray

[y x]=ndgrid(1:size(a,1),1:size(a,2)); 
hist=accumarray([y(:) x(:) a(:)],1); 
+0

谢谢。它有效,但我不太明白。至少我知道在文档中搜索什么! – 2012-01-16 15:08:19

+0

好了,现在我明白了。这很聪明! – 2012-01-16 15:18:57