update

Класс: matlab.graphics.chartcontainer.ChartContainer
Пакет: matlab.graphics.chartcontainer

Обновите экземпляр подкласса контейнера графика после установки свойств

Синтаксис

update(obj)

Описание

update(obj) обновляет содержимое графика после того, как одно или несколько значений общественной собственности изменятся. Задайте этот метод, чтобы обновить базовые графические объекты в графике с помощью новых значений свойств. Этот метод выполняется во время следующего drawnow выполнение, после того, как пользователь изменяет одни или несколько значений свойств на графике.

Входные параметры

развернуть все

Объект класса, который наследовался matlab.graphics.chartcontainer.ChartContainer базовый класс.

Примеры

развернуть все

Задайте класс под названием SmoothPlot это строит набор данных с помощью точечной синей линии со сглаживавшей версией линии.

Чтобы задать класс, создайте файл под названием SmoothPlot.m это содержит следующее определение класса с этими функциями:

  • XData и YData публичные свойства, которые хранят x-и данные y-координаты для исходной линии.

  • SmoothColor и SmoothWidth публичные свойства, которые управляют цветом и шириной ровной линии.

  • OriginalLine и SmoothLine частные свойства, которые хранят Line объекты для исходных и сглаживавших данных.

  • setup метод, который инициализирует OriginalLine и SmoothLine.

  • update метод, который обновляет график, когда пользователь изменяет значение свойства.

  • createSmoothData метод, который вычисляет сглаживавшую версию YData.

classdef SmoothPlot < matlab.graphics.chartcontainer.ChartContainer
    properties
        XData (1,:) double = NaN
        YData (1,:) double = NaN
        SmoothColor (1,3) double {mustBeGreaterThanOrEqual(SmoothColor,0),...
            mustBeLessThanOrEqual(SmoothColor,1)} = [0.9290 0.6940 0.1250]
        SmoothWidth (1,1) double = 2
    end
    properties(Access = private,Transient,NonCopyable)
        OriginalLine (1,1) matlab.graphics.chart.primitive.Line
        SmoothLine (1,1) matlab.graphics.chart.primitive.Line
    end
    
    methods(Access = protected)
        function setup(obj)
            % Create the axes
            ax = getAxes(obj);
            
            % Create the original and smooth lines
            obj.OriginalLine = plot(ax,NaN,NaN,'LineStyle',':');
            hold(ax,'on')
            obj.SmoothLine = plot(ax,NaN,NaN);
            hold(ax,'off')
        end
        function update(obj)
            % Update line data
            obj.OriginalLine.XData = obj.XData;
            obj.OriginalLine.YData = obj.YData;
            obj.SmoothLine.XData = obj.XData;
            obj.SmoothLine.YData = createSmoothData(obj);
            
            % Update line color and width
            obj.SmoothLine.Color = obj.SmoothColor;
            obj.SmoothLine.LineWidth = obj.SmoothWidth;
        end
        function sm = createSmoothData(obj)
            % Calculate smoothed data
            v = ones(1,10)*0.1;
            sm = conv(obj.YData,v,'same');
        end
    end
end

Затем создайте пару x и y векторы. Постройте x и y путем вызова SmoothPlot метод конструктора, который обеспечивается ChartContainer класс. Задайте 'XData' и 'YData' аргументы пары "имя-значение" и возвращают объект как c.

x = 1:1:100;
y = 10*sin(x./5) + 8*sin(10.*x + 0.5);
c = SmoothPlot('XData',x,'YData',y);

Используйте c изменить цвет ровной линии к красному.

c.SmoothColor = [1 0 0];

Введенный в R2019b