1-D стационарного преобразования вейвлета

В этой теме рассматриваются функции 1-D дискретного стационарного вейвлет с помощью программного обеспечения Wavelet Toolbox™. Для получения дополнительной информации смотрите Nondecimated Discrete Stationary Wavelet Transforms (SWT) в Руководстве пользователя Wavelet Toolbox.

Тулбокс обеспечивает эти функции для 1-D дискретного стационарного вейвлет. Для получения дополнительной информации о функциях см. страницы с описанием.

Функции разложения и анализа

Имя функции

Цель

swt

Разложение

Функции синтеза-реконструкции

Имя функции

Цель

iswt

Реконструкция

Стационарная структура разложения вейвлетов более прослеживаема, чем вейвлет. Так что полезные для вейвлета случая утилиты не нужны для стационарного преобразования вейвлета (SWT).

В этом разделе вы научитесь

  • Загрузка сигнала

  • Выполните стационарное вейвлет сигнала

  • Создайте приближения и детали из коэффициентов

  • Отображение приближения и детализации на уровне 1

  • Регенерируйте сигнал при помощи обратного стационарного вейвлет

  • Выполните многоуровневое стационарное вейвлет сигнала

  • Восстановите приближение уровня 3

  • Восстановите данные уровней 1, 2 и 3

  • Восстановите приближения уровня 1 и 2

  • Отображение результатов разложения

  • Восстановите исходный сигнал от разложения уровня 3

  • Удалите шум из сигнала

Поскольку вы можете выполнить анализ или из командной строки или с помощью приложения Wavelet Analyzer, в этом разделе есть подразделы, охватывающие каждый метод.

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

1-D анализ с помощью командной строки

Этот пример включает шумный сигнал Допплеровского теста.

  1. Загрузите сигнал.

    Из MATLAB® приглашение, тип

    load noisdopp
    
  2. Установите переменные. Напечатать

    s = noisdopp; 
    

    Для SWT, если разложение на уровне k требуется, 2^k необходимо разделить равномерно на длину сигнала. Если ваш исходный сигнал не имеет правильной длины, вы можете использовать wextend функция, чтобы расширить его.

  3. Выполните одноуровневое стационарное разложение вейвлет.

    Выполните одноуровневое разложение сигнала с помощью db1 вейвлет. Напечатать

    [swa,swd] = swt(s,1,'db1');
    

    Это генерирует коэффициенты приближения уровня 1 (swa) и детализации (swd). Обе длины совпадают с длиной сигнала. Напечатать

    whos
    
    
    ИмяРазмерБайтыКласс
    noisdopp1x10248192double array
    s1x10248192double array
    swa1x10248192double array
    swd1x10248192double array
  4. Отобразите коэффициенты приближения и детализации.

    Чтобы отобразить коэффициенты приближения и детализации на уровне 1, введите

    subplot(1,2,1), plot(swa); title('Approximation cfs') 
    subplot(1,2,2), plot(swd); title('Detail cfs')
    

  5. Регенерируйте сигнал Обратным Стационарным Преобразованием Вейвлета.

    Чтобы найти обратное преобразование, введите

    A0 = iswt(swa,swd,'db1'); 
    

    Чтобы проверить идеальную реконструкцию, введите

    err = norm(s-A0)
    err = 
     2.1450e-14
    
  6. Создайте и отобразите приближение и детализацию из коэффициентов.

    Чтобы создать приближение и детализацию уровня 1 (A1 и D1) из коэффициентов swa и swd, type

    nulcfs = zeros(size(swa));
    A1 = iswt(swa,nulcfs,'db1');  
    D1 = iswt(nulcfs,swd,'db1');
    

    Чтобы отобразить приближение и детализацию на уровне 1, введите

    subplot(1,2,1), plot(A1); title('Approximation A1'); 
    subplot(1,2,2), plot(D1); title('Detail D1');
    

  7. Выполните многоуровневое стационарное разложение вейвлет.

    Для выполнения разложения на уровне 3 сигнала (снова используя db1 вейвлет), тип

    [swa,swd] = swt(s,3,'db1');
    

    Это генерирует коэффициенты приближений на уровнях 1, 2 и 3 (swa) и коэффициенты деталей (swd). Заметьте, что строки swa и swd имеют ту же длину, что и длина сигнала. Напечатать

    clear A0 A1 D1 err nulcfs 
    whos
    
    ИмяРазмерБайтыКласс
    noisdopp1x10248192double array
    s1x10248192double array
    swa3x102424576double array
    swd3x102424576double array
  8. Отобразите коэффициенты приближений и деталей.

    Чтобы отобразить коэффициенты приближений и деталей, введите

    kp = 0; 
    for i = 1:3
        subplot(3,2,kp+1), plot(swa(i,:));
        title(['Approx. cfs level ',num2str(i)])
        subplot(3,2,kp+2), plot(swd(i,:));  
        title(['Detail cfs level ',num2str(i)])
        kp = kp + 2; 
    end
    

  9. Восстановите приближение на уровне 3 Из коэффициентов.

    Чтобы восстановить приближение на уровне 3, введите

    mzero = zeros(size(swd)); 
    A = mzero; 
    A(3,:) = iswt(swa,mzero,'db1');
    
  10. Восстановите детали из коэффициентов.

    Чтобы восстановить детали на уровнях 1, 2 и 3, введите

    D = mzero; 
    for i = 1:3
        swcfs = mzero;
        swcfs(i,:) = swd(i,:);
        D(i,:) = iswt(mzero,swcfs,'db1');
    end
    
  11. Восстановите и отобразите приближения на уровнях 1 и 2 из аппроксимации на уровне 3 и детали на уровнях 2 и 3.

    Чтобы восстановить приближения на уровнях 2 и 3, введите

    A(2,:) = A(3,:) + D(3,:); 
    A(1,:) = A(2,:) + D(2,:);
    

    Чтобы отобразить приближения и детали на уровнях 1, 2 и 3, введите

    kp = 0; 
    for i = 1:3
        subplot(3,2,kp+1), plot(A(i,:));
        title(['Approx. level ',num2str(i)])
        subplot(3,2,kp+2), plot(D(i,:));
        title(['Detail level ',num2str(i)])
        kp = kp + 2;
    end
    

  12. Снимите шум пороговым значением.

    Чтобы денонсировать сигнал, используйте ddencmp команда для вычисления глобального порога по умолчанию. Используйте wthresh команду для выполнения фактического порога коэффициентов детализации, а затем использовать iswt команда для получения деноизмененного сигнала.

    Примечание

    Все методы для выбора порогов в 1-D случае Дискретного Вейвлет-Преобразования также действительны для 1-D Стационарного Вейвлет-Преобразования, которые также используются Wavelet Analysis app. это также верно для 2-D преобразований.

[thr,sorh] = ddencmp('den','wv',s); 
dswd = wthresh(swd,sorh,thr); 
clean = iswt(swa,dswd,'db1');

Чтобы отобразить как исходный, так и деноизированный сигналы, введите

subplot(2,1,1), plot(s); 
title('Original signal') 
subplot(2,1,2), plot(clean); 
title('denoised signal')

Полученный сигнал остается немного биту шумным. Результат может быть улучшен путем рассмотрения разложения s на уровне 5 вместо уровня 3 и повторяющихся этапах 14 и 15. Для улучшения предыдущего шумоподавления введите

[swa,swd] = swt(s,5,'db1'); 
[thr,sorh] = ddencmp('den','wv',s); 
dswd = wthresh(swd,sorh,thr);
clean = iswt(swa,dswd,'db1'); 
subplot(2,1,1), plot(s); title('Original signal') 
subplot(2,1,2), plot(clean); title('denoised signal')

Второй синтаксис может использоваться для swt и iswt функции, дающие те же результаты:

lev = 5; swc = swt(s,lev,'db1'); 
swcden = swc; 
swcden(1:end-1,:) = wthresh(swcden(1:end-1,:),sorh,thr);
clean = iswt(swcden,'db1');

Можно получить тот же график с помощью тех же команд plot, что и на шаге 16 выше.

Интерактивное 1-D стационарное шумоподавление преобразования вейвлета

Теперь мы исследуем стратегию денуизации сигналов, основанную на 1-D стационарном вейвлет с помощью приложения Wavelet Analyzer. Основная идея состоит в том, чтобы усреднить много немного различных дискретных вейвлет.

  1. Запустите Stationary Wavelet Transform Denoizing 1-D Инструмент.

    Из подсказки MATLAB введите waveletAnalyzer.

    Появится Wavelet Analyzer.

    Выберите меню SWT Шумоподавления 1-D элемента. Появляется дискретный стационарный инструмент вейвлета преобразования шумоподавления для 1-D сигналов.

  2. Загрузка данных.

    В командной строке MATLAB введите

    load noisbloc;
    В инструменте SWT Denoising 1-D выберите File > Import Signal from Workspace. Когда появится диалоговое окно Импорт из рабочей области (Import from Workspace), выберите noisbloc переменная. Нажмите OK, чтобы импортировать сигнал шумных блоков.

  3. Выполните стационарное разложение вейвлет.

    Выберите db1 вейвлет из меню Wavelet и выберите 5 из меню Level, а затем нажмите кнопку Decompose Signal. После паузы на расчет инструмент отображает стационарные коэффициенты вейвлета приближения и детализации разложения. Они также называются неразрешенными коэффициентами, поскольку они получаются с использованием той же схемы, что и для DWT, но без шага десятикратного уменьшения (см. «Алгоритм быстрого преобразования вейвлет (FWT)» в Руководстве пользователя Wavelet Toolbox).

  4. денуризировать сигнал с помощью Стационарного Преобразования Вейвлета.

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

    Обратите внимание, что коэффициенты приближения не порога.

    Нажмите кнопку denoise.

    Результат вполне удовлетворителен, но, кажется, перегружен вокруг разрывов сигнала. Это можно увидеть, посмотрев на невязки и изменение масштаба точки разрушения, например, вокруг положения 800.

Выбор метода порогового значения

Выберите жесткий режим порога вместо мягкого, а затем нажмите кнопку denoise.

Результатом является хорошее качество, и невязки выглядят как выборка шума. Чтобы выяснить эту последнюю точку, вы можете получить дополнительную информацию об невязках, нажав кнопку «Невязки».

Импорт и экспорт из приложения Wavelet Analysis

Инструмент позволяет сохранять деноизированный сигнал на диск. Тулбокс создает MAT-файл в текущей папке с именем по вашему выбору.

Чтобы сохранить вышеуказанный деноизированный сигнал, используйте опцию меню File > Save denoised Signal. Появляется диалоговое окно, которое позволяет вам задать папку и имя файла для хранения сигнала. Введите имя dnoibloc. После сохранения данных сигнала в файл dnoibloc.mat, загрузите переменные в рабочую область:

load dnoibloc 
whos
ИмяРазмерБайтыКласс
dnoibloc1x10248192double array
thrParams1x5580cell array
wname1x36char array

Деноизированный сигнал задается dnoibloc. В сложение доступны параметры процесса шумоподавления. Имя вейвлета содержится в wname:

wname

wname =   
    db1

и зависимые от уровня пороги закодированы в thrParams, который является массивом ячеек длиной 5 (уровень разложения). Для i от 1 до 5, thrParams{i} содержит нижнюю и верхнюю границы интервала порога и пороговое значение (поскольку допускаются интервально зависимые пороги). Для получения дополнительной информации смотрите 1-D Адаптивное пороговое значение коэффициентов вейвлета.

Для примера, для уровня 1,

thrParams{1}
 ans =
      1.0e+03 *
      0.0010 1.0240 0.0041

Здесь нижняя граница равна 1, верхняя граница равна 1024, и пороговое значение равно 4,1. Общий временной интервал не сегментирован, и процедура не использует интервально зависимые пороги.