smooth

Сглаженные данные об ответе

Описание

пример

yy = smooth(y) сглаживает данные об ответе в вектор-столбце y использование фильтра скользящего среднего значения.

Первые несколько элементов yy следовать.

yy(1) = y(1)
yy(2) = (y(1) + y(2) + y(3))/3
yy(3) = (y(1) + y(2) + y(3) + y(4) + y(5))/5
yy(4) = (y(2) + y(3) + y(4) + y(5) + y(6))/5
...
Из-за пути smooth конечные точки указателей, результат отличается от результата, возвращенного filter функция.

yy = smooth(y,span) устанавливает промежуток скользящего среднего значения к span.

yy = smooth(y,method) сглаживает данные в y использование метода задано method и span по умолчанию.

пример

yy = smooth(y,span,method) устанавливает промежуток method к span.

yy = smooth(y,'sgolay',degree) использует метод Savitzky-Golay с полиномиальной степенью, заданной degree.

yy = smooth(y,span,'sgolay',degree) использует количество точек данных, заданных span в вычислении Savitzky-Golay. span должно быть нечетным и degree должен быть меньше span.

пример

yy = smooth(x,y,___) задает значения для независимой переменной x. Можно использовать этот синтаксис с любым из аргументов в предыдущих синтаксисах.

gpuarrayYY = smooth(gpuarrayY,___) выполняет операцию на использовании графического процессора gpuArray данные. Можно использовать gpuArray данные об ответе со всеми предыдущими синтаксисами. Этот синтаксис требует Parallel Computing Toolbox™.

gpuarrayYY = smooth(gpuarrayX,gpuarrayY,___) выполняет операцию на использовании графического процессора gpuArray входные данные. Этот синтаксис требует Parallel Computing Toolbox.

Примечание

Используя gpuArray x и y входные параметры с smooth функция только рекомендуется, если вы используете метод по умолчанию, 'moving'. Используя данные графического процессора с другими методами не предлагает преимущества эффективности.

Примеры

свернуть все

Сглаженные данные линейным индексом и каждым столбцом отдельно, с помощью фильтра скользящего среднего значения. Постройте и сравните результаты.

Загрузите данные в count.dat. 24 3 массив count содержит количества трафика на трех пересечениях в течение каждого часа дня.

load count.dat

Предположим, что данные являются от одного пересечения более чем тремя днями подряд. Сглаживание всех данных вместе затем указало бы на полный цикл потока трафика через пересечение. Используйте фильтр скользящего среднего значения с 5-часовым промежутком, чтобы сглаживать все данные одновременно (линейным индексом).

c = smooth(count(:));
C1 = reshape(c,24,3);

Однако данные на самом деле от трех различных пересечений. Таким образом сглаживание по столбцам дает более значимое изображение трафика через каждое пересечение за день. Используйте тот же фильтр скользящего среднего значения, чтобы сглаживать каждый столбец данных отдельно.

C2 = zeros(24,3);
for I = 1:3
    C2(:,I) = smooth(count(:,I));
end

Отобразите на графике исходные данные и данные, сглаживавшие линейным индексом и каждым столбцом отдельно. Затем постройте различие между двумя сглаживавшими наборами данных. Эти два метода дают различные результаты около конечных точек.

subplot(3,1,1)
plot(count,':');
hold on
plot(C1,'-');
title('Smooth C1 (All Data)')

subplot(3,1,2)
plot(count,':');
hold on
plot(C2,'-');
title('Smooth C2 (Each Column)')

subplot(3,1,3)
plot(C2 - C1,'o-')
title('Difference C2 - C1')

Figure contains 3 axes objects. Axes object 1 with title Smooth C1 (All Data) contains 6 objects of type line. Axes object 2 with title Smooth C2 (Each Column) contains 6 objects of type line. Axes object 3 with title Difference C2 - C1 contains 3 objects of type line.

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

Создайте зашумленные данные с двумя выбросами.

x = (0:0.1:15)';
y = sin(x) + 0.5*(rand(size(x))-0.5);
y([90,110]) = 3;

Сглаживайте данные с loess и rloess методы. Используйте промежуток 10% общего количества точек данных.

yy1 = smooth(x,y,0.1,'loess');
yy2 = smooth(x,y,0.1,'rloess');

Отобразите исходные и сглаживавшие данные на графике. Выбросы имеют меньше влияния на устойчивый метод rloess.

subplot(2,1,1)
plot(x,y,'b.',x,yy1,'r-')
set(gca,'YLim',[-1.5 3.5])
legend('Original data','Smoothed data using ''loess''',...
       'Location','NW')
   
subplot(2,1,2)
plot(x,y,'b.',x,yy2,'r-')
set(gca,'YLim',[-1.5 3.5])
legend('Original data','Smoothed data using ''rloess''',...
       'Location','NW')

Figure contains 2 axes objects. Axes object 1 contains 2 objects of type line. These objects represent Original data, Smoothed data using 'loess'. Axes object 2 contains 2 objects of type line. These objects represent Original data, Smoothed data using 'rloess'.

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

свернуть все

Данные, чтобы сглаживать в виде вектор-столбца.

Если ваши данные содержат NaNs и вы не задаете x, ваши данные обработаны как неоднородные и метод сглаживания 'lowess' используется.

Типы данных: single | double

Количество точек данных для вычисления сглаживавшего значения в виде целого числа или как скалярное значение в области значений (0,1) обозначение части общего количества точек данных.

Если вы используете скользящее среднее значение или методы Savitzky-Golay, количество точек данных для вычисления сглаживавшего значения должно быть нечетным целым числом. Если вы задаете span как четное число или как часть, которая приводит к четному числу точек данных, span автоматически уменьшается на 1.

Пример 7; 0.6

Сглаживание метода, чтобы сглаживать данные об ответе в виде одного из следующих методов.

Метод

Описание

'moving' (значение по умолчанию)

Скользящее среднее значение. Фильтр lowpass с коэффициентами фильтра равняется обратной величине промежутка.

'lowess'

Локальная регрессия с помощью взвешенного линейного метода наименьших квадратов и 1-й полиномиальной модели степени.

'loess'

Локальная регрессия с помощью взвешенного линейного метода наименьших квадратов и 2-й полиномиальной модели степени.

'sgolay'

Фильтр Savitzky-Golay. Обобщенное скользящее среднее значение с коэффициентами фильтра, определенными невзвешенной регрессией линейного метода наименьших квадратов и полиномиальной моделью заданной степени (значение по умолчанию равняется 2). Метод может принять неоднородные данные о предикторе.

'rlowess'

Устойчивая версия 'lowess' это присваивает более низкий вес выбросам в регрессии. Метод присваивает нулевой вес данным вне шести средних абсолютных отклонений.

'rloess'

Устойчивая версия 'loess' это присваивает более низкий вес выбросам в регрессии. Метод присваивает нулевой вес данным вне шести средних абсолютных отклонений.

Типы данных: char | string

Полиномиальная степень для модели используется в методе Savitzky-Golay в виде скалярного значения. degree должен быть меньше span.

Пример 3

Независимая переменная для данных об ответе yВ виде вектор-столбца. Если вы не обеспечиваете x, методы, которые требуют x примите x = 1:length(y). Задайте x данные, когда y не отсортирован или однородно расположен с интервалами. Если x не универсально, и вы не задаете method, lowess используется. Если вы задаете метод сглаживания, который требует x чтобы быть отсортированной, функция автоматически сортирует x данные.

Типы данных: single | double

Данные, чтобы сглаживать в виде a gpuArray вектор-столбец.

Типы данных: single | double

Входные данные для данных об ответе gpuarrayYВ виде a gpuArray вектор-столбец. Если вы не обеспечиваете gpuarrayX, методы, которые требуют gpuarrayX примите gpuarrayX = 1:length(y). Задайте gpuarrayX данные, когда данные не расположены равными интервалами или сортируются. Если gpuarrayX данные не универсальны, и вы не задаете метод сглаживания, 'lowess' используется. Если вы задаете метод сглаживания, который требует gpuarrayX чтобы быть отсортированной, функция автоматически сортирует gpuarrayX данные.

Типы данных: single | double

Выходные аргументы

свернуть все

Сглаживавшие данные, возвращенные как вектор-столбец.

Сглаживавшие данные, возвращенные как a gpuArray вектор-столбец.

Советы

  • Для большего количества опций для сглаживания данных, включая движущиеся средние и Гауссовы методы, смотрите smoothdata.

  • Можно сгенерировать сглаженную подгонку к данным с помощью сплайна сглаживания. Для получения дополнительной информации смотрите fit.

Расширенные возможности

Представлено до R2006a