Этот пример показывает, чтобы сглаживать и denoise неоднородно выборочные данные с помощью многошкального локального полиномиального преобразования (MLPT). MLPT является поднимающейся схемой (Янсен, 2013), который совместно использует много характеристик дискретного вейвлета, преобразовывают, и работает с неоднородно выборочными данными.
Много реальных временных рядов имеют наблюдения, которые не зарегистрированы в расположенных с равными интервалами интервалах. Это может быть результатом неоднородной выборки данных или от пропавших без вести или поврежденных наблюдений. Дискретный вейвлет преобразовывает (DWT) является мощным инструментом для данных о шумоподавлении или выполнения непараметрической регрессии, но классический DWT задан для однородно выборочных данных. Концепция шкалы, которая является центральной к DWT, кардинально зависит от равного интервала между наблюдениями.
Поднимающаяся схема (вейвлеты второго поколения) (Jansen & Oonincx, 2005) обеспечивает, способ разработать вейвлеты и реализовать вейвлет преобразовывают полностью во время (пространственную) область. В то время как классический DWT может также быть представлен поднимающейся схемой, подъем также достаточно гибок, чтобы обработать неоднородно выборочные данные.
Загрузите и постройте шумные неоднородно выбранные временные ряды.
load skyline plot(T,y) xlabel('Seconds') grid on
Если вы строите различие времени выборки, вы видите, что данные неоднородно выбираются.
plot(diff(T)) title('First Difference of Sampling Times') axis tight ylabel('\Delta T') xlabel('Sample') grid on
В этом синтетическом наборе данных у вас есть доступ к исходному бесшумному сигналу. Если вы отображаете те данные на графике, вы видите, что данные характеризуются путем сглаженного варьирования функций, а также резких переходных функций около 0.07, 0.26, и 0,79 секунды.
plot(T,f) xlabel('Seconds') grid on title('Original (Noise-Free) Data')
В реальных приложениях резкие изменения в данных часто показывают важные события. Когда вы denoise такие данные, важно не сгладить переходные процессы. Вейвлеты обычно превосходят при шумоподавлении такие данные, потому что вейвлеты простираются, чтобы совпадать с более долгой длительностью, гладко отличающейся функции и уменьшение, чтобы совпадать с переходными процессами. MLPT имеет подобные характеристики, но он естественно обрабатывает неоднородно выборочные данные. Denoise данные с помощью MLPT.
xden = mlptdenoise(y,T,3); hline = plot(T,[f xden]); grid on hline(1).LineWidth = 2; title('MLPT Denoising')
MLPT делает хорошее задание шумоподавления данные. Гладко переменные функции хорошо представлены, и переходные процессы сохраняются. В этом синтетическом наборе данных можно на самом деле измерить отношение сигнал-шум (SNR) denoised версии.
SNR = 20*log10(norm(f,2)/norm(xden-f,2)); title(['SNR ' num2str(SNR,'%2.2f') 'dB'])
ОСШ составляет почти 20 дБ. Конечно, можно проигнорировать то, что данные неоднородно выбираются и обрабатывают выборки, как однородно выбрано. Denoise предыдущий набор данных с помощью 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;
Здесь DWT делает хорошее задание шумоподавления данные, но это превзойдено по характеристикам MLPT, который явным образом принимает неоднородные моменты выборки во внимание.
Сравните вейвлет и результаты шумоподавления MLPT против метода Savitzky-Golay, который реализует локальное полиномиальное приближение данных. Вариант Savitzky-Golay, реализованного в 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;
И классический DWT и MLPT превосходят Savitzky-Golay по характеристикам на этих данных.
Рассмотрите другой неоднородно выбранный синтетический набор данных.
load nonuniformheavisine plot(t,x) grid on
Эти данные обычно более сглаженны, чем предыдущий пример с существенным исключением двух переходных процессов в 0,3 и 0,7 секунды. Данные как они представляют собой проблему для методов как Savitzky-Golay, потому что полином младшего разряда требуется, чтобы соответствовать гладко колеблющимся данным, в то время как полином высшего порядка требуется, чтобы аппроксимировать скачки.
Denoise данные с помощью MLPT и меры ОСШ. Возвратите и исходные коэффициенты MLPT и denoised коэффициенты.
[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']})
Постройте исходные и denoised коэффициенты.
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')
Сравните результат MLPT с методом Savitzky-Golay.
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']})
Здесь метод MLPT значительно превосходит Savitzky-Golay по характеристикам. Это особенно очевидно в неспособности метода Savitzky-Golay получить переходные процессы около 0,3 и 0,7 секунд.
Во многих приложениях цель состоит в том, чтобы оценить некоторую неизвестную функцию отклика, когда одна или несколько переменных прогноза отличаются. Когда точная форма функции отклика неизвестна, это - пример непараметрической регрессии.
Главная цель в этих случаях состоит в том, чтобы часто получать сглаженную оценку, принимающую, что неизвестная функция отклика изменяется гладко с изменениями в предикторе.
Как пример непараметрической регрессии с неоднородно выборочными данными, считайте следующие данные, состоящие из измерений G-силы сделанными на шлеме мотоцикла макета краш-теста при условиях катастрофического отказа.
load motorcycledata plot(times,gmeasurements) grid on xlabel('Time') ylabel('G-force')
Если вы строите различие данных времени, вы видите, что данные выбираются неоднородно.
plot(diff(times)) title('First Difference of Time Data') grid on
Данные являются шумными, но в данных, кажется, существует ясная общая тенденция. А именно, существует начальная отрицательная 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')
Приближение MLPT на уровне 4 обеспечивает хорошую сглаженную подгонку к данным, которые позволяют вам получать существенную природу ответа без эффекта шума.
Этот пример продемонстрировал многошкальное локальное полиномиальное преобразование (MLPT), поднимающаяся схема, которая поддается неоднородно выборочным данным. MLPT полезен для шумоподавления или непараметрической регрессии в случаях пропавших без вести или неоднородно выборочных данных. Минимально, это - полезный сравнительный тест для сравнения с методами шумоподавления вейвлета, разработанными, чтобы работать над однородно выборочными данными. В других случаях это превосходит обычное шумоподавление вейвлета по характеристикам путем явного принятия неоднородной сетки выборки во внимание.
Янсен, M. "Многошкальное Локальное Сглаживание Полинома в Снятой Пирамиде для Неравномерно расположенных Данных". Транзакции IEEE на Обработке сигналов. Издание 61, Номер 3, 2013, стр 545-555.
Янсен, M. и Патрик Унинккс. "Вейвлеты второго поколения и приложения". Лондон: Спрингер, 2005.