qmf

Масштабирование и фильтр вейвлета

    Синтаксис

    Описание

    Y = qmf(X) изменяет знаки даже индексированных элементов обратных векторных коэффициентов фильтра X.

    пример

    Y = qmf(X,P) изменяет знаки даже индексированных элементов обратных векторных коэффициентов фильтра X если P 0. Если P 1, знаки нечетно индексированных элементов инвертируются. Изменение P изменяет фазу преобразования Фурье получившегося фильтра вейвлета по π радианам.

    Примеры

    свернуть все

    В этом примере показано, как создать квадратурный фильтр зеркала, сопоставленный с db10 вейвлет.

    Получите масштабирующийся фильтр, сопоставленный с db10 вейвлет.

    sF = dbwavf("db10");

    dbwavf нормирует коэффициенты фильтра так, чтобы норма была равна 1/2. Нормируйте коэффициенты так, чтобы фильтр имел норму, равную 1.

    G = sqrt(2)*sF;

    Получите коэффициенты фильтра вейвлета при помощи qmf. Постройте фильтры.

    H = qmf(G);
    subplot(2,1,1)
    stem(G)
    title("Scaling (Lowpass) Filter G")
    grid on
    subplot(2,1,2)
    stem(H)
    title("Wavelet (Highpass) Filter H")
    grid on

    Figure contains 2 axes objects. Axes object 1 with title Scaling (Lowpass) Filter G contains an object of type stem. Axes object 2 with title Wavelet (Highpass) Filter H contains an object of type stem.

    Сохраните текущий дополнительный режим. Установите дополнительный режим на Periodization. Сгенерируйте случайный сигнал длины 64. Выполните одноуровневое разложение вейвлета сигнала с помощью G и H. В целях воспроизводимости, набор случайный seed к значению по умолчанию.

    origmode = dwtmode("status","nodisplay");
    dwtmode("per","nodisplay")
    n = 64;
    rng default
    sig = randn(1,n);
    [a,d] = dwt(sig,G,H);

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

    [sum(sig.^2) sum(a.^2)+sum(d.^2)]
    ans = 1×2
    
       92.6872   92.6872
    
    

    Вычислите частотные характеристики G и H. Zeropad фильтры при взятии преобразования Фурье.

    n = 128;
    F = 0:1/n:1-1/n;
    Gdft = fft(G,n);
    Hdft = fft(H,n);

    Постройте величину каждой частотной характеристики.

    figure
    plot(F(1:n/2+1),abs(Gdft(1:n/2+1)),"r")
    hold on
    plot(F(1:n/2+1),abs(Hdft(1:n/2+1)),"b")
    grid on
    title("Frequency Responses")
    xlabel("Normalized Frequency")
    ylabel("Magnitude")
    legend("Lowpass Filter","Highpass Filter","Location","east")
    hold off

    Figure contains an axes object. The axes object with title Frequency Responses contains 2 objects of type line. These objects represent Lowpass Filter, Highpass Filter.

    Подтвердите сумму величин в квадрате частотных характеристик G и H на каждой частоте равно 2.

    sumMagnitudes = abs(Gdft).^2+abs(Hdft).^2;
    [min(sumMagnitudes) max(sumMagnitudes)]
    ans = 1×2
    
        2.0000    2.0000
    
    

    Подтвердите, что фильтры ортонормированы.

    df = [G;H];
    id = df*df'
    id = 2×2
    
        1.0000    0.0000
        0.0000    1.0000
    
    

    Восстановите исходный дополнительный режим.

    dwtmode(origmode,"nodisplay")

    Этот пример показывает эффект установки параметра фазы qmf функция.

    Получите разложение фильтр lowpass, сопоставленный с вейвлетом Daubechies.

    lowfilt = wfilters("db4");

    Используйте qmf функция, чтобы получить разложение фильтр lowpass для вейвлета. Затем сравните знаки значений когда qmf параметр фазы устанавливается на 0 или 1. Обратные знаки указывают на сдвиг фазы π радианы, который совпадает с умножением ДПФ eiπ.

    p0 = qmf(lowfilt,0)
    p0 = 1×8
    
        0.2304   -0.7148    0.6309    0.0280   -0.1870   -0.0308    0.0329    0.0106
    
    
    p1 = qmf(lowfilt,1)
    p1 = 1×8
    
       -0.2304    0.7148   -0.6309   -0.0280    0.1870    0.0308   -0.0329   -0.0106
    
    

    Вычислите величины и отобразите различие между ними. В отличие от фазы, величина не затронута реверсированиями знака.

    abs(p0)-abs(p1)
    ans = 1×8
    
         0     0     0     0     0     0     0     0
    
    

    Входные параметры

    свернуть все

    Отфильтруйте коэффициенты в виде вектора.

    Типы данных: single | double

    Параметр фазы в виде следует.

    • 0 — Измените знаки даже индексированных элементов обратного векторного X

    • 1 — Измените знаки нечетно индексированных элементов обратного векторного X

    Типы данных: single | double

    Больше о

    свернуть все

    Квадратурные фильтры зеркала

    Позвольте x будьте конечным энергетическим сигналом. Два фильтра F0 и F1 являются квадратурными фильтрами зеркала (QMF) если для любого x,

    y02+y12=x2

    где y0 является подкошенной версией x сигнала, отфильтрованного с F0, таким образом, y0 задан x0 = F0 (x) и y0 (n) = x0 (2n). Точно так же y1 задан x1 = F1 (x) и y1 (n) = x1 (2n). Это свойство гарантирует совершенную реконструкцию связанной двухканальной схемы наборов фильтров (см. [1] p. 103).

    Например, если F0 является Daubechies, масштабирующий фильтр с нормой, равной 1 и F1 = qmf(F0), затем передаточные функции F0 (z) и F1 (z) фильтров F0 и F1 удовлетворяет условию:

    |F0(z)|2+|F1(z)|2=2.

    Ссылки

    [1] Странг, Гильберт и Труун Нгуен. Вейвлеты и Наборы фильтров. Исправленное издание Веллесли, Масса: Wellesley-Кембриджское Нажатие, 1997.

    Расширенные возможности

    Генерация кода C/C++
    Генерация кода C и C++ с помощью MATLAB® Coder™.

    Представлено до R2006a