Этот пример показывает, чтобы сглаживать и 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.