Режим курсора данных 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
Другие вопросы по тегам