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

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

В реальных приложениях резкие изменения в данных часто показывают важные события. Когда вы denoise такие данные, важно не сгладить переходные процессы. Вейвлеты обычно превосходят при шумоподавлении такие данные, потому что вейвлеты простираются, чтобы совпадать с более долгой длительностью, гладко варьирующейся функции и уменьшение, чтобы совпадать с переходными процессами. MLPT имеет подобные характеристики, но он естественно обрабатывает неоднородно выборочные данные. Denoise данные с помощью 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) denoised версии.

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 дБ. Конечно, можно проигнорировать то, что данные неоднородно производятся и обрабатывают выборки, как однородно произведено. 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;

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

Здесь 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;

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 секунды. Данные как они представляют собой проблему для методов как 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']})

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

Постройте исходные и 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')

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 с методом 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']})

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

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

Ссылки

Янсен, M. "Многошкальное Локальное Сглаживание Полинома в Снятой Пирамиде для Неравномерно расположенных Данных". Транзакции IEEE на Обработке сигналов. Издание 61, Номер 3, 2013, стр 545-555.

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