2012-01-16 17 views
2

私は1から32までの値を持つ行列を持っていますが、ヒストグラムの行列を作成して、(i、j)番目のヒストグラムはゼロ1をa(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

ありがとう。それは動作しますが、私は方法をかなり理解していません。少なくとも私はドキュメントで何を検索するのか知っています! –

+0

今、私はそれを手に入れます。それはスマートです! –

関連する問題