dualtree

Q-сдвиг Кингсбери 1-D двухдревовидное комплексное вейвлет

Описание

[A,D] = dualtree(X) возвращает 1-D комплексное вейвлет (DTCWT) X. Область выхода A - матрица коэффициентов масштабирования (lowpass) реального уровня. Область выхода D - L -by-1 массив ячеек комплексных вейвлет-коэффициентов, где L - уровень преобразования.

Область входа X должны иметь не менее двух выборки. DTCWT получается по умолчанию до уровня floor(log2N), где N - длина X если X является вектором и размерностью строки X если X является матрицей. Если N нечетно, X расширяется на одну выборку путем отражения последнего элемента X.

По умолчанию, dualtree использует почти симметричную пару биортогонального фильтра с длинами 5 (масштабирующий фильтр) и 7 (вейвлет) для уровня 1 и ортогональную пару вейвлет Гильберта с длиной 10 для уровней, больших или равных 2.

[___,Ascale] = dualtree(X) возвращает коэффициенты масштабирования (lowpass) на каждом уровне.

пример

[___] = dualtree(X,Name,Value) задает дополнительные опции, используя аргументы пары "имя-значение". Для примера, 'Level',10 задает разложение до уровня 10.

Примеры

свернуть все

Загрузка сигнала ЭКГ.

load wecg
plot(wecg)
axis tight

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

Получите 4-уровневое преобразование двойственного дерева. Верните аппроксимационные (lowpass) коэффициенты на всех уровнях.

[a,d,as] = dualtree(wecg,'Level',4);

Постройте график вейвлет последнего уровня из дерева A и дерева B.

figure
subplot(2,1,1)
plot(real(d{4}))
axis tight
title('Tree A')
subplot(2,1,2)
plot(imag(d{4}))
axis tight
title('Tree B')

Figure contains 2 axes. Axes 1 with title Tree A contains an object of type line. Axes 2 with title Tree B contains an object of type line.

Постройте график коэффициентов lowpass на каждом уровне преобразования.

figure
for k=1:4
    subplot(2,2,k)
    plot(as{k})
    axis tight
    title(['Level: ',num2str(k)])
end

Figure contains 4 axes. Axes 1 with title Level: 1 contains an object of type line. Axes 2 with title Level: 2 contains an object of type line. Axes 3 with title Level: 3 contains an object of type line. Axes 4 with title Level: 4 contains an object of type line.

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

Загрузка сигнала ЭКГ. Сигнал имеет 2048 выборки.

load wecg
len = numel(wecg);
plot(wecg)
axis tight

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

Создайте два нулевых вектора 1 на 3000. Вставьте сигнал ECG в различные сегменты каждого нулевого вектора.

shift1 = 328;
shift2 = 368;
vec1 = zeros(1,3000);
vec2 = zeros(1,3000);
vec1(shift1+[1:len]) = wecg;
vec2(shift2+[1:len]) = wecg;

Получите двухдревовидное преобразование обоих векторов. Используйте настройки по умолчанию.

[a1,d1] = dualtree(vec1);
[a2,d2] = dualtree(vec2);

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

energy1 = cell2mat(cellfun(@(x)(sum(abs(x).^2)),d1,'uni',0));
energy2 = cell2mat(cellfun(@(x)(sum(abs(x).^2)),d2,'uni',0));
levels =cell(numel(energy1),1);
for k=1:numel(energy1)
    levels{k} = sprintf('Level %d',k);
end
energies = table(levels,energy1,energy2)
energies=11×3 table
       levels       energy1    energy2
    ____________    _______    _______

    {'Level 1' }    16.014     16.014 
    {'Level 2' }    19.095     19.095 
    {'Level 3' }     35.99      35.99 
    {'Level 4' }    25.141     25.065 
    {'Level 5' }     16.81     17.452 
    {'Level 6' }    9.7078      9.161 
    {'Level 7' }    2.3201     2.0513 
    {'Level 8' }    8.3808     8.4197 
    {'Level 9' }    23.006      22.56 
    {'Level 10'}    70.764     73.964 
    {'Level 11'}    64.097     59.022 

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

свернуть все

Входные данные, заданные как действительный вектор, матрица или timetable. Область входа X должны иметь не менее двух выборки. Если X является расписанием, оно может содержать один вектор или матрицу переменную, или может содержать несколько переменных, каждый из которых содержит вектор-столбец. Если X является матрицей, dualtree работает с столбцами X.

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

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'LevelOneFilter','antonini','Level',4

Уровень разложения, заданный как положительное целое число, меньше или равное floor(log2N), где N - длина X если X является вектором и размерностью строки X если X является матрицей. Если не задано, Level по умолчанию является floor(log2N).

Биортогональный фильтр для использования в анализе первого уровня, указанный как:

  • 'legall' - Фильтр LeGall 5/3 [3]

  • 'nearsym13_19' - (13,19) -открыть околоортогональный фильтр [2]

  • 'nearsym5_7' - (5,7) -открыть околоортогональный фильтр [1]

  • 'antonini' - (9,7) -открыть фильтр Антонини [1]

По умолчанию, dualtree использует 'nearsym5_7', почти симметричная биортогональная фильтрующая пара с длинами 5 (масштабирующий фильтр) и 7 (вейвлет).

Ортогональный фильтр анализа Q-сдвига Гильберта пары длину для использования на уровнях 2 и выше, заданную в качестве одного из перечисленных значений [2]. По умолчанию, dualtree использует ортогональную пару вейвлет Гильберта Q-сдвига длиной 10.

Выходные аргументы

свернуть все

Коэффициенты приближения конечного уровня, возвращенные как действительный вектор, если X является вектором или матрицей, если X является мультисигналом. Коэффициенты приближения являются коэффициентами масштабирования (lowpass) последнего уровня. Если X является матрицей, размерностями столбцов X и A равны.

Вейвлет, возвращенные как L-на-1 массив ячеек комплексных вейвлет, где L - уровень преобразования. Действительные части коэффициентов - из дерева A, а мнимые части - из дерева B. Если X является матрицей, каждый элемент D - матрица, размерность столбца которой равна размерности столбца X.

Приближения на каждом уровне преобразования, возвращенные как L -на-1 массив ячеек вещественных масштабирующих (lowpass) коэффициентов, где L - уровень преобразования. Если X является матрицей, каждый элемент D - матрица, размерность столбца которой равна размерности столбца X.

Ссылки

[1] Antonini, M., M. Barlaud, P. Mathieu, and I. Daubechies. «Кодирование изображений с использованием Вейвлета преобразования». Транзакции IEEE по обработке изображений 1, № 2 (апрель 1992): 205-20. https://doi.org/10.1109/83.136597.

[2] Кингсбери, Ник. Комплексные вейвлеты для инвариантного анализа сдвига и фильтрации сигналов. Прикладной и вычислительный гармонический анализ 10, № 3 (май 2001 года): 234-53. https://doi.org/10.1006/acha.2000.0343.

[3] Le Gall, D., and A. Tabatabai. «Субдиапазонное кодирование цифровых изображений с использованием симметричных фильтров короткого ядра и методов арифметического кодирования». В ICASSP-88. Международная конференция по акустике, речи и обработке сигналов, 761-64. Нью-Йорк, Нью-Йорк, США: IEEE, 1988. https://doi.org/10.1109/ICASSP.1988.196696.

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

.
Введенный в R2020a