How do I plot the nearest neighbour algorithm in a matrix?
14 ビュー (過去 30 日間)
古いコメントを表示
Hi,
X = [0 0 0 0 0; 0 0 1 0 0; 0 0 0 0 1]
I would like to produce a coloured grid that displays the matrix elements equal to one as red. Yellow for the elements at a neighbourhood of 8 connectivity to the non-zero elements and green for the elements further away from 1.
Should I be using brute force or knnsearch or is there a better/ faster way to go about it?
Thanks
1 件のコメント
Walter Roberson
2017 年 3 月 27 日
.... Then don't use that code.
You have forgotten that chessboard distance does not stop at distance 1 or 2.
採用された回答
Walter Roberson
2017 年 3 月 18 日
編集済み: Walter Roberson
2017 年 3 月 18 日
d = bwdist(X);
t = ones(size(X));
t(d < 1.5) = 3;
t(d == 0) = 2;
cmap = [0 1 0;
1 0 0;
1 1 0];
image(t);
axis image
colormap(cmap)
3 件のコメント
Walter Roberson
2017 年 3 月 18 日
Another approach:
t = imdilate(X, ones(3,3)) + 1;
t(X==1) = 3;
cmap = [0 1 0;
1 1 0;
1 0 0];
image(t)
axis equal
colormap(cmap)
その他の回答 (1 件)
Chad Greene
2017 年 3 月 18 日
How about bwlabel? Then you can use imagesc to display the matrix and set the colormap to red, yellow, and green by
colormap([0.9 0 0;1 1 0.08; 0.08 0.69 0.1])
1 件のコメント
Walter Roberson
2017 年 3 月 18 日
bwlabel is not enough in this case to figure out whether you are beside a 1.
参考
カテゴリ
Help Center および File Exchange で Data Distribution Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
