2012-01-16 120 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