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) использует метод Савицкого-Голея с полиномиальной степенью, заданной degree.

yy = smooth(y,span,'sgolay',degree) использует количество точек данных, заданное как span в расчёте Савицкого-Голая. 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. Axes 1 with title Smooth C1 (All Data) contains 6 objects of type line. Axes 2 with title Smooth C2 (Each Column) contains 6 objects of type line. Axes 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. Axes 1 contains 2 objects of type line. These objects represent Original data, Smoothed data using 'loess'. Axes 2 contains 2 objects of type line. These objects represent Original data, Smoothed data using 'rloess'.

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

свернуть все

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

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

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

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

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

Пример: 7; 0.6

Метод сглаживания для сглаживания данных отклика, заданный как один из следующих методов.

Метод

Описание

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

Скользящее среднее значение. Lowpass с коэффициентами фильтра, равными обратному диапазону.

'lowess'

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

'loess'

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

'sgolay'

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

'rlowess'

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

'rloess'

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

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

Пример: 3

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

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

Данные для сглаживания, заданные как gpuArray Вектор-столбец.

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

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

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

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

свернуть все

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

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

Совет

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

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

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

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