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

Этот пример показывает сглаживание и денуризацию неоднородно выборочных данных с помощью многомасштабного локального полиномиального преобразования (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 = 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.

ОСШ составляет почти 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 по этим данным превосходят Savitzky-Golay.

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

load nonuniformheavisine
plot(t,x)
grid on

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

Эти данные обычно более плавны, чем в предыдущем примере, за заметным исключением двух переходных процессов на 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 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 полезен для шумоподавления или непараметрической регрессии в случаях отсутствующих или неоднородно выборочных данных. Минимально, он является полезным эталоном для сравнения с методами шумоподавления вейвлетов, предназначенными для работы с равномерно выбранными данными. В других случаях он превосходит обычное шумоподавление вейвлета, явно принимая во внимание неоднородную сетку дискретизации.

Ссылки

Jansen, M. «Multiscale Local Polynomial Smooting in a Lifted Pyramid for Non-Equispaced Data». Транзакции IEEE по обработке сигналов. Том 61, № 3, 2013, стр. 545-555.

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