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!
