Многомерное шумоподавление вейвлета

Цель этого примера состоит в том, чтобы показать функции многомерного шумоподавления, обеспеченного в Wavelet Toolbox™.

Многомерные проблемы шумоподавления вейвлета имеют дело с моделями формы

X(t)=F(t)+e(t)

где наблюдение X является p-dimensional, F является детерминированным сигналом, который будет восстановлен, и e является пространственно коррелируемым шумовым сигналом. Этот пример использует много шумовых сигналов и выполняет следующие шаги к denoise детерминированный сигнал.

Загрузка многомерного сигнала

Чтобы загрузить многомерный сигнал, введите следующий код в подсказке MATLAB®:

 load ex4mwden
 whos
  Name           Size            Bytes  Class     Attributes

  covar          4x4               128  double              
  x           1024x4             32768  double              
  x_orig      1024x4             32768  double              

Обычно, только матрица данных x доступна. Здесь, у нас также есть истинная шумовая ковариационная матрица covar и исходные сигналы x_orig. Эти сигналы являются шумными версиями простых комбинаций двух исходных сигналов. Первый сигнал является "Блоками", который неправилен, и второй является "HeavySine", который является регулярным, приблизительно кроме времени 750. Другие два сигнала являются суммой и различием двух исходных сигналов, соответственно. Многомерный Гауссов белый шум, показывающий сильную пространственную корреляцию, добавляется к получившимся четырем сигналам, который производит наблюдаемые данные, хранимые в x.

Отображение исходных и наблюдаемых сигналов

Чтобы отобразить исходные и наблюдаемые сигналы, введите:

kp = 0;
for i = 1:4 
    subplot(4,2,kp+1), plot(x_orig(:,i)); axis tight;
    title(['Original signal ',num2str(i)])
    subplot(4,2,kp+2), plot(x(:,i)); axis tight;
    title(['Observed signal ',num2str(i)])
    kp = kp + 2;
end

Истинной шумовой ковариационной матрицей дают:

covar
covar = 4×4

    1.0000    0.8000    0.6000    0.7000
    0.8000    1.0000    0.5000    0.6000
    0.6000    0.5000    1.0000    0.7000
    0.7000    0.6000    0.7000    1.0000

Удаление шума простой многомерной пороговой обработкой

Стратегия шумоподавления комбинирует одномерное шумоподавление вейвлета в основании, где предполагаемая шумовая ковариационная матрица является диагональной с Анализом главных компонентов (PCA) нев центре приближений в области вейвлета или с итоговым PCA.

Во-первых, выполните одномерное шумоподавление путем ввода следующих строк, чтобы установить параметры шумоподавления:

level = 5;
wname = 'sym4';
tptr  = 'sqtwolog';
sorh  = 's';

Затем установите параметры PCA путем сохранения всех основных компонентов:

npc_app = 4;
npc_fin = 4;

Наконец, выполните многомерное шумоподавление путем ввода:

x_den = wmulden(x, level, wname, npc_app, npc_fin, tptr, sorh);

Отображение исходных сигналов Denoised и

Чтобы отобразить оригинал и сигналы denoised вводят следующее:

clf
kp = 0;
for i = 1:4 
    subplot(4,3,kp+1), plot(x_orig(:,i)); axis tight; 
    title(['Original signal ',num2str(i)])
    subplot(4,3,kp+2), plot(x(:,i)); axis tight;
    title(['Observed signal ',num2str(i)])
    subplot(4,3,kp+3), plot(x_den(:,i)); axis tight;
    title(['Denoised signal ',num2str(i)])
    kp = kp + 3;
end

Улучшение первого результата путем сохранения меньшего количества основных компонентов

Мы видим, что, в целом, результаты являются удовлетворительными. При фокусировке на двух первых сигналах обратите внимание, что они правильно восстанавливаются, но мы можем улучшить результат путем использования в своих интересах отношений между сигналами, продвижения к дополнительному эффекту шумоподавления.

Чтобы автоматически выбрать количества сохраненных основных компонентов, использующих правило Кайзера, которое сохраняет компоненты, сопоставленные с собственными значениями, превышающими среднее значение всех собственных значений, введите:

npc_app = 'kais';
npc_fin = 'kais';

Выполните многомерное шумоподавление снова путем ввода:

[x_den, npc, nestco] = wmulden(x, level, wname, npc_app, ...
     npc_fin, tptr, sorh);

Отображение количества сохраненных основных компонентов

Вторым выходным аргументом npc является количество сохраненных основных компонентов для PCA для приближений и для итогового PCA.

npc
npc = 1×2

     2     2

Как ожидалось, потому что сигналы являются комбинациями двух исходных сигналов, правило Кайзера автоматически обнаруживает, что только два основных компонента представляют интерес.

Отображение предполагаемой шумовой ковариационной матрицы

Третий выходной аргумент nestco содержит предполагаемую шумовую ковариационную матрицу:

nestco
nestco = 4×4

    1.0784    0.8333    0.6878    0.8141
    0.8333    1.0025    0.5275    0.6814
    0.6878    0.5275    1.0501    0.7734
    0.8141    0.6814    0.7734    1.0967

Когда это видно путем сравнения его с истинным матричным покрытием, данным ранее, оценка является удовлетворительной.

Отображение исходных и итоговых сигналов Denoised

Отобразить исходный и итоговый denoised сигнализирует о типе:

kp = 0;
for i = 1:4 
    subplot(4,3,kp+1), plot(x_orig(:,i)); axis tight;
    title(['Original signal ',num2str(i)])
    subplot(4,3,kp+2), plot(x(:,i)); axis tight;
    title(['Observed signal ',num2str(i)])
    subplot(4,3,kp+3), plot(x_den(:,i)); axis tight;
    title(['Denoised signal ',num2str(i)])
    kp = kp + 3;
end

Эти результаты лучше, чем ранее полученные. Первый сигнал, который неправилен, все еще правильно восстанавливается, в то время как второй сигнал, который является более регулярным, является лучшим denoised после этого второго этапа PCA.

Получение дополнительной информации о многомерном шумоподавлении

Можно найти больше информации о многомерном шумоподавлении, включая некоторую теорию, симуляции и действительные примеры, в следующей ссылке:

М. Амингафари, Н. Чез и ДЖ-М. Poggi (2006), "Многомерное шумоподавление с помощью вейвлетов и анализа главных компонентов", Computational Statistics & Data Analysis, 50, стр 2381-2398.