在数据处理中,常需要在可视化图像中,选择一个或多个点,通过查看、提取其(X, Y, Z)信息,以进行后续分析、检验等工作。
Matlab的图像窗口(Figure Window)中,数据游标可以满足 “查看” 数据坐标信息的需求。
但仅能 “查看” 难以满足作者的工作需求,所以考虑如何提取所需的坐标信息,生成一个包含该坐标信息的变量。
不多BB,直接上代码。
function pos = getpointsXYZ(data,n)
hFigure= figure;
scatter3(data(:,1),data(:,2),data(:,3),10,data(:,3),'filled')
datacursormode on
dcm_obj = datacursormode(hFigure);
pos = zeros(n,3);
for i = 1:n
disp('Click line to display a data tip, then press Return.')
% Wait while the user does this.
pause
c_info = getCursorInfo(dcm_obj);
pos(i,:) = c_info.Position;
end
end
函数 getpointsXYZ
输入:data为XYZ坐标矩阵,其中第一列为X,第二列为Y,第三列为Z。
n为要选择的点的个数。
输出:pos为选择的点的XYZ坐标。
效果如下:
使用时,在图像窗口中鼠标左键单击所需的点,按任意键确定,然后选择下一个点……直到选完所需n个点。
懒得自己动手的同学,我把数据、函数以及说明传上去了,点下面链接可以下载。