Этот пример показывает сглаживание и денуризацию неоднородно выборочных данных с помощью многомасштабного локального полиномиального преобразования (MLPT). MLPT является схемой подъема (Jansen, 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')
В реальных приложениях резкие изменения данных часто означают важные события. Когда вы обличаете такие данные, важно не сглаживать переходные процессы. Вейвлеты обычно выделяются при шумоподавлении таких данных, потому что вейвлеты растягиваются, чтобы соответствовать более длительным плавно изменяющимся функциям и сжимаются, чтобы соответствовать переходным процессам. MLPT имеет аналогичные характеристики, но, естественно, он обрабатывает неоднородно выборочные данные. Денуризируйте данные с помощью MLPT.
xden = mlptdenoise(y,T,3); hline = plot(T,[f xden]); grid on hline(1).LineWidth = 2; title('MLPT Denoising')
MLPT хорошо справляется с шумоподавлением данных. Хорошо представлены плавно изменяющиеся функции и сохранены переходные процессы. В этом синтетическом наборе данных можно фактически измерить отношение сигнал/шум (ОСШ) деноизированной версии.
SNR = 20*log10(norm(f,2)/norm(xden-f,2)); title(['SNR ' num2str(SNR,'%2.2f') 'dB'])
ОСШ составляет почти 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;
Здесь 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;
И классический DWT, и MLPT по этим данным превосходят Savitzky-Golay.
Рассмотрим другой неоднородно выбранный синтетический набор данных.
load nonuniformheavisine plot(t,x) grid on
Эти данные обычно более плавны, чем в предыдущем примере, за заметным исключением двух переходных процессов на 0,3 и 0,7 секунде. Подобные данные представляют проблему для таких методов, как Савицкий-Голай, потому что полином низкого порядка необходим, чтобы соответствовать плавно колеблющимся данным, в то время как полином более высокого порядка требуется, чтобы аппроксимировать переходы.
Денуризируйте данные с помощью MLPT и измерьте ОСШ. Возвращает и исходные коэффициенты 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 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 с методом Савицкого-Голая.
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 значительно превосходит Савицкого-Голая. Особенно это проявляется в неспособности метода Савицкого-Голая захватить переходные процессы около 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 полезен для шумоподавления или непараметрической регрессии в случаях отсутствующих или неоднородно выборочных данных. Минимально, он является полезным эталоном для сравнения с методами шумоподавления вейвлетов, предназначенными для работы с равномерно выбранными данными. В других случаях он превосходит обычное шумоподавление вейвлета, явно принимая во внимание неоднородную сетку дискретизации.
Jansen, M. «Multiscale Local Polynomial Smooting in a Lifted Pyramid for Non-Equispaced Data». Транзакции IEEE по обработке сигналов. Том 61, № 3, 2013, стр. 545-555.
Янсен, М. и Патрик Онинкс. «Второй Генерации Вейвлетов и приложений». Лондон: Спрингер, 2005.