2017-08-29 8 views
2

私は3列の行列を持っています。最初の2つの列は座標で、3番目の列は重みまたは強度です。2座標の列と重みの列を使用した密度プロット

newmat = [ 27.37 -45.69 14.47 
      27.37 -45.68 18.58 
      27.37 -45.67 29.05 
      27.37 -45.66 51.7 
      ...  ...  ... ] 

私はすでに、散布図を作成しました:

scatterplot

しかし、私は(2番目のプロットhereなど)の密度プロットのようなものを持っているしたいと思います。私はhist3の機能をhereのように使用しようとしましたが、第3列の重みを考慮する方法はわかりませんでした。

+0

'out = accumarray([idxx、idxy]、1);'これをout = accumarray([idxx、idxy]、weights)で置き換えます; – Gelliant

+0

ありがとうございます。どのように私はそれが私を助けますか? – Aviad

答えて

0

あなたは(機能sortrowsunique、およびaccumarrayを使用して)newmatのデータから行列を作成し、imageとしてそれをプロットできます。ここでは

newmat = sortrows(newmat, [1 2]); % Sort the first two columns in ascending order 
[x, ~, newmat(:, 1)] = unique(newmat(:, 1));  % Make numeric indices for column 1 
[y, ~, newmat(:, 2)] = unique(newmat(:, 2));  % Make numeric indices for column 2 
M = accumarray(newmat(:, 1:2), newmat(:, 3)).'; % Build the matrix 
imagesc(x, y, M); 

はあなたの形式に似たいくつかのサンプルデータです:

[X, Y] = meshgrid(0:0.1:2, 3:0.1:5); 
Z = peaks(21); 
newmat = [X(:) Y(:) Z(:)]; 

そしてここでは、上記のコードは、そのデータから生成しプロットです

+0

ありがとうございました。それは非常に便利でした! – Aviad