MATLAB 数据游标模式
MATLAB Data Cursor Mode
我有一个简单的 class 可以绘制基本的 x 和 y 数据。在 class 中,我有一个启用数据游标模式、自定义文本以及收集和保存点的方法。我想更改该方法的行为,以便一次只能收集两个点。现在,即使我关闭数据游标模式并重新打开它以使用它,它也会存储每个点。这是我的 class:
代码
classdef CursorPoint
properties
Xdata
Ydata
end
methods
function me = CursorPoint(varargin)
x_data = 0:.01:2*pi;
y_data = cos(x_data);
f= figure;
plot(x_data,y_data);
me.DCM(f);
end
function DCM(me,fig)
dcm_obj = datacursormode(fig);
set(dcm_obj,'UpdateFcn',@myupdatefcn)
set(dcm_obj,'enable','on')
myPoints=[];
function txt = myupdatefcn(empt,event_obj)
% Customizes text of data tips
pos = get(event_obj,'Position');
myPoints(end + 1,:) = pos;
txt = {['Time: ',num2str(pos(1))],...
['Amplitude: ',num2str(pos(2))]};
end
end
end
end
您能否将 myPoints
变量更改为两个名为 myPointCurrent
和 myPointPrevious
的变量。每当调用 myupdatefcn
方法时,您会将 myPointCurrent
的内容移动到 myPointPrevious
中,然后将当前位置存储在 myPointCurrent
.
中
新函数(带有一些错误检查)看起来像:
function txt = myupdatefcn(empt,event_obj)
% Customizes text of data tips
myPointPrevious=myPointCurrent;
pos = get(event_obj,'Position');
myPointCurrent=pos;
txt = {['Time: ',num2str(pos(1))],...
['Amplitude: ',num2str(pos(2))]};
end
我有一个简单的 class 可以绘制基本的 x 和 y 数据。在 class 中,我有一个启用数据游标模式、自定义文本以及收集和保存点的方法。我想更改该方法的行为,以便一次只能收集两个点。现在,即使我关闭数据游标模式并重新打开它以使用它,它也会存储每个点。这是我的 class:
代码classdef CursorPoint
properties
Xdata
Ydata
end
methods
function me = CursorPoint(varargin)
x_data = 0:.01:2*pi;
y_data = cos(x_data);
f= figure;
plot(x_data,y_data);
me.DCM(f);
end
function DCM(me,fig)
dcm_obj = datacursormode(fig);
set(dcm_obj,'UpdateFcn',@myupdatefcn)
set(dcm_obj,'enable','on')
myPoints=[];
function txt = myupdatefcn(empt,event_obj)
% Customizes text of data tips
pos = get(event_obj,'Position');
myPoints(end + 1,:) = pos;
txt = {['Time: ',num2str(pos(1))],...
['Amplitude: ',num2str(pos(2))]};
end
end
end
end
您能否将 myPoints
变量更改为两个名为 myPointCurrent
和 myPointPrevious
的变量。每当调用 myupdatefcn
方法时,您会将 myPointCurrent
的内容移动到 myPointPrevious
中,然后将当前位置存储在 myPointCurrent
.
新函数(带有一些错误检查)看起来像:
function txt = myupdatefcn(empt,event_obj)
% Customizes text of data tips
myPointPrevious=myPointCurrent;
pos = get(event_obj,'Position');
myPointCurrent=pos;
txt = {['Time: ',num2str(pos(1))],...
['Amplitude: ',num2str(pos(2))]};
end