Режим курсора данных MATLAB
У меня есть простой класс, который строит базовые данные x и y. В классе у меня есть метод, который включает режим курсора данных, настраивает текст, собирает и сохраняет точки. Я хотел бы изменить поведение метода, чтобы я мог собирать только две точки за раз. Прямо сейчас он сохраняет каждую точку, даже когда я выключаю режим курсора данных и снова включаю его, чтобы использовать его. Вот мой код для моего класса:
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
1 ответ
Не могли бы вы изменить 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