如何在矩阵中绘制非零元素的坐标?

时间:2014-11-12 18:05:57

标签: matlab matrix graph plot coordinate-systems

我有一个填充0和1的418x284矩阵,并希望绘制一个图形,其中点是一个位置的所有位置,x和y坐标是(0到284,0到-418)。
我该怎么做呢? 谢谢你的帮助!

2 个答案:

答案 0 :(得分:3)

您也可以使用spy(),但需要调整刻度标签。

假设您有以下矩阵:

A = rand(418,284)>.7;

然后:

spy(A)

enter image description here

调整标签:

yticks = get(gca, 'YTick');
yticks(yticks ~= 0) = -yticks(yticks ~= 0);
set(gca, 'YTickLabel', yticks)

enter image description here

答案 1 :(得分:1)

通过二进制矩阵设mat。您可以使用find

获取非零元素的坐标
[I,J] = find(mat)
plot(I, J);

注意在Matlab中图像和绘图的轴的约定是不同的。上面的代码假设I是行索引(从上到下),J是列索引(从左到右)。

一个工作示例:

mat=eye(10);
[I, J]=find(mat);

subplot(1,2,1), imshow(mat)
subplot(1,2,2), plot(I, J);

结果:

          Binary image                              Non-zero pixels location

enter image description here