Задайте класс под названием 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
.
Используйте c
изменить цвет ровной линии к красному.