【发布时间】:2014-11-12 18:05:56
【问题描述】:
我有一个用 0 和 1 填充的 418x284 矩阵,我想绘制一个图,其中所有点都是一个人的位置,x 和 y 坐标是(0 到 284,0 到 -418)。
我该怎么做呢?
感谢您的所有帮助!
【问题讨论】:
标签: matlab matrix graph plot coordinate-systems
我有一个用 0 和 1 填充的 418x284 矩阵,我想绘制一个图,其中所有点都是一个人的位置,x 和 y 坐标是(0 到 284,0 到 -418)。
我该怎么做呢?
感谢您的所有帮助!
【问题讨论】:
标签: matlab matrix graph plot coordinate-systems
您也可以使用spy(),但您需要调整刻度标签。
假设你有以下矩阵:
A = rand(418,284)>.7;
然后:
spy(A)
调整标签:
yticks = get(gca, 'YTick');
yticks(yticks ~= 0) = -yticks(yticks ~= 0);
set(gca, 'YTickLabel', yticks)
【讨论】:
让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
【讨论】: