Аналитические вейвлеты с использованием преобразования двойственного древовидного вейвлета

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

Создайте нулевой сигнал 256 выборки в длину. Получите два преобразования нуля в дереве до уровня 5. По умолчанию dualtree использует почти симметричную пару биортогонального фильтра по умолчанию nearsym5_7 для уровня 1 и ортогональной пары вейвлет Гильберта Q-сдвига длины 10 для уровней, больше 1.

x = zeros(256,1);
[a1,d1] = dualtree(x,'Level',5);
[a2,d2] = dualtree(x,'Level',5);

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

d1{5}(5) = 1;
d2{5}(5) = 1i;
wav1 = idualtree(a1,d1);
wav2 = idualtree(a2,d2);

Сформируйте сложный вейвлет, используя первое дерево как действительную часть, а второе - как мнимую. Постройте график действительной и мнимой частей вейвлета.

analwav = wav1+1i*wav2;
plot(real(analwav))
hold on
plot(imag(analwav),'r')
plot(abs(analwav),'k','linewidth',2)
axis tight
legend('Real part','Imaginary part','Magnitude','Location','Northwest')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Real part, Imaginary part, Magnitude.

Фурье преобразует аналитический вейвлет и строит график величины.

zdft = fft(analwav);
domega = (2*pi)/length(analwav);
omega = 0:domega:(2*pi)-domega;
clf;
plot(omega,abs(zdft))
xlabel('Radians/Sample')
axis tight

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

Преобразование Фурье вейвлета имеет поддержку по существу только на половину оси частоты.