сглаженный

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

Синтаксис

yy = smooth(y)
yy = smooth(y,span)
yy = smooth(y,method)
yy = smooth(y,span,method)
yy = smooth(y,'sgolay',degree)
yy = smooth(y,span,'sgolay',degree)
yy = smooth(x,y,___)
gpuarrayYY = smooth(gpuarrayY,___)
gpuarrayYY = smooth(gpuarrayX,gpuarrayY,___)

Описание

пример

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

Предположим, что данные являются от одного пересечения более чем тремя днями подряд. При сглаживании всех данных togther затем указал бы на полный цикл потока трафика через пересечение. Используйте фильтр скользящего среднего значения с 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')

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

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

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

Сглаживайте данные с методами rloess и loess. Используйте промежуток 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')

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

свернуть все

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

Если ваши данные содержат NaN s, и вы не задаете 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', который присваивает более низкий вес выбросам в регрессии. Метод присваивает нулевой вес данным вне шести средних абсолютных отклонений.

Полиномиальная степень для модели, используемой в методе Savitzky-Golay, заданном как скалярное значение. 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

Для просмотра документации необходимо авторизоваться на сайте