exponenta event banner

Сглаживание неравномерно выбранных данных

В этом примере показано сглаживание и затенение неравномерно дискретизированных данных с использованием многомасштабного локального полиномиального преобразования (MLPT). MLPT - это схема подъема (Jansen, 2013), которая разделяет многие характеристики дискретного вейвлет-преобразования и работает с неравномерно дискретизированными данными.

Многие ряды реального времени имеют наблюдения, которые не регистрируются с регулярными интервалами. Это может быть результатом неравномерной выборки данных или отсутствующих или поврежденных наблюдений. Дискретное вейвлет-преобразование (DWT) является мощным инструментом для деноизирования данных или выполнения непараметрической регрессии, но классический DWT определяется для данных с равномерной выборкой. Концепция масштаба, которая является центральной для DWT, в решающей степени зависит от регулярного интервала между наблюдениями.

Схема подъема (вейвлеты второго поколения) (Jansen & Oonincx, 2005) обеспечивает способ конструирования вейвлетов и реализации вейвлетного преобразования полностью во временной (пространственной) области. Хотя классический DWT также может быть представлен схемой подъема, подъем также является достаточно гибким для обработки неравномерно отобранных данных.

Деноизирующие данные

Загрузите и постройте график шумного неравномерно дискретизированного временного ряда.

load skyline
plot(T,y)
xlabel('Seconds')
grid on

Figure contains an axes. The axes contains an object of type line.

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

plot(diff(T))
title('First Difference of Sampling Times')
axis tight
ylabel('\Delta T')
xlabel('Sample')
grid on

Figure contains an axes. The axes with title First Difference of Sampling Times contains an object of type line.

В этом синтетическом наборе данных имеется доступ к исходному сигналу без шума. При построении графика эти данные характеризуются плавно изменяющимися элементами, а также внезапными переходными элементами, близкими к 0,07, 0,26 и 0,79 секундам.

plot(T,f)
xlabel('Seconds')
grid on
title('Original (Noise-Free) Data')

Figure contains an axes. The axes with title Original (Noise-Free) Data contains an object of type line.

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

xden = mlptdenoise(y,T,3);
hline = plot(T,[f xden]);
grid on
hline(1).LineWidth = 2;
title('MLPT Denoising')

Figure contains an axes. The axes with title MLPT Denoising contains 2 objects of type line.

MLPT делает хорошую работу по отрицанию данных. Плавно изменяющиеся признаки хорошо представлены, и переходные процессы сохранены. В этом синтетическом наборе данных можно измерить отношение сигнал/шум (SNR) деноизированной версии.

SNR = 20*log10(norm(f,2)/norm(xden-f,2));
title(['SNR  ' num2str(SNR,'%2.2f') 'dB'])

Figure contains an axes. The axes with title SNR 19.67dB contains 2 objects of type line.

SNR составляет почти 20 дБ. Конечно, можно игнорировать тот факт, что данные дискретизированы неравномерно, и рассматривать образцы как однородные. Удалите предыдущий набор данных с помощью DWT.

xd = wdenoise(y,3,'Wavelet','bior2.2','DenoisingMethod','SURE','NoiseEstimate','LevelDependent');
SNR = 20*log10(norm(f,2)/norm(xd-f,2));
hline = plot(T,[f xd]);
title(['SNR  ' num2str(SNR,'%2.2f') 'dB'])
grid on
hline(1).LineWidth = 2;

Figure contains an axes. The axes with title SNR 18.77dB contains 2 objects of type line.

Здесь DWT делает хорошую работу по обесценению данных, но он превосходит MLPT, который явно принимает во внимание неравномерные моменты выборки.

Сравните результаты вейвлета и MLPT-деноизирования с методом Савицки-Голая, реализующим локальное полиномиальное приближение данных. Вариант Савицкого-Голая реализован в smoothdata обрабатывает равномерно и неравномерно дискретизированные данные.

xdsg = smoothdata(y,'sgolay','degree',4,'samplepoints',T);
SNR = 20*log10(norm(f,2)/norm(xdsg-f,2));
hline = plot(T,[f xdsg]);
title(['SNR  ' num2str(SNR,'%2.2f') ' dB'])
grid on
hline(1).LineWidth = 2;

Figure contains an axes. The axes with title SNR 17.08 dB contains 2 objects of type line.

И классический DWT, и MLPT превосходят Савицки-Голая по этим данным.

Рассмотрим другой набор синтетических данных с неравномерной выборкой.

load nonuniformheavisine
plot(t,x)
grid on

Figure contains an axes. The axes contains an object of type line.

Эти данные обычно являются более гладкими, чем в предыдущем примере, за исключением двух переходных процессов со скоростью 0,3 и 0,7 секунды. Подобные данные представляют собой проблему для таких методов, как Savitzky-Golay, потому что полином низкого порядка необходим для соответствия плавно колеблющимся данным, в то время как полином более высокого порядка необходим для аппроксимации скачков.

Удалите данные с помощью MLPT и измерьте SNR. Возвращает как исходные коэффициенты MLPT, так и деноизированные коэффициенты.

[xden,t,wthr,w] = mlptdenoise(x,t,3,'denoisingmethod','SURE');
plot(t,[f xden])
grid on
SNR = 20*log10(norm(f,2)/norm(xden-f,2));
title({'MLPT Denoising'; ['SNR  ' num2str(SNR,'%2.2f') ' dB']})

Figure contains an axes. The axes with title MLPT Denoising SNR 28.56 dB contains 2 objects of type line.

Постройте график исходных и обозначенных коэффициентов.

figure
subplot(2,1,1)
stem(w,'ShowBaseLine','off','Marker','None')
title('Original MLPT Coefficients')
subplot(2,1,2)
stem(wthr,'ShowBaseLine','off','Marker','None')
title('Denoised MLPT Coefficients')

Figure contains 2 axes. Axes 1 with title Original MLPT Coefficients contains an object of type stem. Axes 2 with title Denoised MLPT Coefficients contains an object of type stem.

Сравните результат MLPT с методом Савицкого-Голая.

xdsg = smoothdata(x,'sgolay','degree',4,'samplepoints',t);
figure
plot(t,[f xdsg])
grid on
SNR = 20*log10(norm(f,2)/norm(xdsg-f,2));
title({'Savitzky-Golay Denoising'; ['SNR  ' num2str(SNR,'%2.2f') ' dB']})

Figure contains an axes. The axes with title Savitzky-Golay Denoising SNR 23.75 dB contains 2 objects of type line.

Здесь метод MLPT значительно превосходит Савицкого-Голая. Это особенно очевидно в неспособности метода Савицки-Голая захватить переходные процессы вблизи 0,3 и 0,7 секунды.

Непараметрическая регрессия

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

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

В качестве примера непараметрической регрессии с нерегулярно отобранными данными рассмотрим следующие данные, состоящие из измерений силы G, произведенных на мотоциклетном шлеме манекена для испытания на столкновение в условиях крушения.

load motorcycledata
plot(times,gmeasurements)
grid on
xlabel('Time')
ylabel('G-force')

Figure contains an axes. The axes contains an object of type line.

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

plot(diff(times))
title('First Difference of Time Data')
grid on

Figure contains an axes. The axes with title First Difference of Time Data contains an object of type line.

Данные являются шумными, но, по-видимому, имеется четкая общая тенденция в данных. В частности, существует первоначальная отрицательная G-сила, которая затем начинает превращаться в положительную со временем. Положительный отскок продолжается после 0, а затем восстанавливается до базового уровня. Вы можете использовать mlptrecon для получения непараметрической регрессии для этих данных.

[w,t,nj,scalingmoments] = mlpt(gmeasurements,times,'dualmoments',4,...
    'primalmoments',4,'prefilter','none');
a4 = mlptrecon('a',w,t,nj,scalingmoments,4,'dualmoments',4);
hline = plot(times,[gmeasurements a4]);
grid on
hline(2).LineWidth = 2;
legend('Original Data','Smooth Fit')
xlabel('Time')
ylabel('G-force')
title('G-Force Measurements')

Figure contains an axes. The axes with title G-Force Measurements contains 2 objects of type line. These objects represent Original Data, Smooth Fit.

Аппроксимация MLPT на уровне 4 обеспечивает хорошую плавную подгонку к данным, что позволяет зафиксировать существенную природу отклика без влияния шума.

Резюме

Этот пример продемонстрировал многомасштабное локальное полиномиальное преобразование (MLPT), схему подъема, которая поддается неравномерной выборке данных. MLPT полезен для деноизирования или непараметрической регрессии в случаях отсутствия или неравномерной выборки данных. Как минимум, это полезный эталон для сравнения с методами вейвлет-денойзинга, предназначенными для работы с данными с равномерной выборкой. В других случаях он превосходит обычное вейвлет-деноизирование, явно принимая во внимание неравномерную сетку выборки.

Ссылки

Янсен, М. «Многомасштабное локальное полиномиальное сглаживание в поднятой пирамиде для неравнозначных данных». Транзакции IEEE при обработке сигналов. Том 61, номер 3, 2013, стр. 545-555.

Янсен, М. и Патрик Унинкс. «Вейвлеты и приложения второго поколения». Лондон: Спрингер, 2005.