modwpt

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

Описание

пример

wpt = modwpt(x) возвращает терминальные узлы для максимального перекрытия дискретного преобразования пакета вейвлет (MODWPT) для 1-D сигнала с реальным значением, x.

Примечание

Выход MODWPT задерживается по сравнению с входным сигналом. Большинство фильтров, используемых для получения MODWPT, имеют нелинейный фазовый отклик, что затрудняет компенсацию временной задержки. Это верно для всех ортогональных фильтров масштабирования и вейвлет, кроме вейвлета Haar. Возможно выровнять коэффициенты по времени с функциями сигнала, но результатом является приближение, а не точное выравнивание с исходным сигналом. MODWPT разделяет энергию среди вейвлета пакетов на каждом уровне. Сумма энергии по всем пакетам равна общей энергии входного сигнала. Выход MODWPT полезен для приложений, где вы хотите анализировать уровни энергии в разных пакетах.

Детали MODWPT (modwptdetails) являются результатом нулевой фазовой фильтрации сигнала. Функции в деталях MODWPT точно совпадают с функциями в входном сигнале. Для заданного уровня суммирование деталей для каждой выборки возвращает точный исходный сигнал. Выходы деталей MODWPT полезны для приложений, которые требуют выравнивания по времени, таких как непараметрический регрессионный анализ.

пример

wpt = modwpt(x,wname) возвращает MODWPT с помощью ортогонального вейвлета фильтра, заданного wname.

пример

wpt = modwpt(x,lo,hi) возвращает MODWPT с помощью ортогонального масштабирования фильтра, lo, и вейвлет, hi.

wpt = modwpt(___,lev) возвращает терминальные узлы дерева вейвлета пакетов на положительном целочисленном уровне lev.

пример

[wpt,packetlevs] = modwpt(___) возвращает вектор уровней преобразования, соответствующий строкам wpt.

[wpt,packetlevs,cfreq] = modwpt(___) возвращает центральные частоты приблизительных полос пропускания, соответствующих строкам wpt.

пример

[wpt,packetlevs,cfreq,energy] = modwpt(___) возвращает энергию (квадратную L2 норму) коэффициентов пакета вейвлета для узлов в wpt.

пример

[wpt,packetlevs,cfreq,energy,relenergy] = modwpt(___) возвращает относительную энергию для вейвлета пакетов в wpt.

пример

[___] = modwpt(___,Name,Value) возвращает MODWPT с дополнительными опциями, заданными одним или несколькими Name,Value аргументы в виде пар.

Примеры

свернуть все

Получите MODWPT сигнала электрокардиограммы (ECG) с помощью длины по умолчанию 18 Fejer-Korovkin ('fk18') вейвлет.

load wecg;
wpt = modwpt(wecg);

wpt - матрица 16 на 2048, содержащая упорядоченные по последовательности коэффициенты вейвлета пакета для узлов преобразования вейвлета пакета. В этом случае узлы находятся на уровне 4. Каждый узел соответствует приблизительной фильтрации полосы пропускания [nfs/25,(n+1)fs/25), где n = 0,..., 15, иfs - частота дискретизации. Постройте график коэффициентов пакета вейвлета в узле (4,2), который является уровнем 4, узлом 2.

plot(wpt(3,:))
title('Node 4 Wavelet Packet Coefficients')

Figure contains an axes. The axes with title Node 4 Wavelet Packet Coefficients contains an object of type line.

Получите данные MODWPT индекса южного колебания с вейвлет экстремальной фазы Daubechies с двумя моментами исчезновения ('db2').

load soi;
wsoi = modwpt(soi,'db2');

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

size(wsoi)
ans = 1×2

          16       12998

Получите MODWPT формы волны ЭКГ с помощью масштабирующих и вейвлет Fejer-Korovkin length 18.

load wecg; 
[lo,hi] = wfilters('fk18');
wpt = modwpt(wecg,lo,hi);

Получите MODWPT и полный вейвлет вейвлет-пакетов формы волны ЭКГ, используя длину по умолчанию 18 Fejer-Korovkin ('fk18') вейвлет. Извлеките и постройте график коэффициентов узла на уровне 3, узел 2.

load wecg;     
[wpt,packetlevels,cfreq] = modwpt(wecg,'FullTree',true);
p3 = wpt(packetlevels==3,:);
plot(p3(3,:))
title('Level 3, Node 2 Wavelet Coefficients')

Figure contains an axes. The axes with title Level 3, Node 2 Wavelet Coefficients contains an object of type line.

Отображение центральных частот на уровне 3.

cfreq(packetlevels==3,:)
ans = 8×1

    0.0312
    0.0938
    0.1562
    0.2188
    0.2812
    0.3438
    0.4062
    0.4688

Получите и постройте график энергии MODWPT и относительной энергии волны ЭКГ.

load wecg
[wpt,~,cfreq,energy,relenergy] = modwpt(wecg);

Покажите, что сумма энергий MODWPT равна сумме энергии в исходном сигнале. Различие между общей энергией MODWPT и энергией сигнала достаточно маленькая, чтобы считаться незначительной.

disp(['Difference between MODWPT energy and signal energy: ',num2str(sum(energy)-sum(wecg.^2))])
Difference between MODWPT energy and signal energy: 3.6122e-09

Постройте график энергии MODWPT по узлам.

figure
bar(1:16,energy)
xlabel('Node')
ylabel('Energy')
title('Energy by Node')

Figure contains an axes. The axes with title Energy by Node contains an object of type bar.

disp(['Total power in passband: ',num2str(energy(1))])
Total power in passband: 200.8446

Постройте график относительной энергии и покажите процент энергии сигнала в первой полосе пропускания [0,5,6250].

figure
bar(1:16,relenergy*100)
xlabel('Node')
ylabel('Percent Energy')
title('Energy Relative to Signal Energy by Node')

Figure contains an axes. The axes with title Energy Relative to Signal Energy by Node contains an object of type bar.

disp(['Percentage of signal power in passband: ',num2str(relenergy(1)*100)])
Percentage of signal power in passband: 67.3352

Получите выровненный по времени MODWPT двух прерывистых синусоид в шуме. Частоты синусоид составляют 150 Гц и 200 Гц. Данные отбираются с частотой дискретизации 1000 Гц.

dt = 0.001;     
t = 0:dt:1-dt;     
x = cos(2*pi*150*t).*(t>=0.2 & t<0.4)+ sin(2*pi*200*t).*(t>0.6 & t<0.9);     
y = x+0.05*randn(size(t));
[wpta,~,Falign] = modwpt(x,'TimeAlign',true);
[wptn,~,Fnon] = modwpt(x);

Сравните несогласованные и выровненные по времени частотно-временные графики.

subplot(2,1,1);
contour(t,Fnon.*(1/dt),abs(wptn).^2); 
grid on;     
ylabel('Hz');     
title('Time-Frequency Plot (Nonaligned)');
subplot(2,1,2)     
contour(t,Falign.*(1/dt),abs(wpta).^2); 
grid on;     
xlabel('Time'); 
ylabel('Hz');     
title('Time-Frequency Plot (Aligned)');

Figure contains 2 axes. Axes 1 with title Time-Frequency Plot (Nonaligned) contains an object of type contour. Axes 2 with title Time-Frequency Plot (Aligned) contains an object of type contour.

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

свернуть все

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

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

Анализ вейвлет-фильтра, заданный как a, который соответствует ортогональному вейвлет. Если вы задаете масштабирование (lo) и вейвлет (hi) фильтры, modwpt игнорирует wname вход.

Допустимые ортогональные семейства вейвлетов начинаются с одного из следующих, далее указывается целое число N, для примера, sym4. Обратите внимание, однако, что 'haar' не сопровождается целым числом.

  • 'haar' - вейвлет Haar, который аналогичен вейвлет Daubechies с одним исчезающим моментом 'db1',.

  • 'db N' - Daubechies вейвлет с N исчезающие моменты

  • 'sym <reservedrangesplaceholder0>' - Симлеты вейвлет с N исчезающие моменты

  • 'чепец N' - Вейвлет Coiflets с N исчезающие моменты

  • 'fk <reservedrangesplaceholder0>' - вейвлет Фейера-Коровкина с N коэффициенты

Чтобы проверить, является ли ваш вейвлет ортогональным, используйте wavemngr('type',wname) и проверьте, что он возвращается 1 как тип вейвлет. Чтобы определить допустимые значения для N, используйте waveinfo, для примера, waveinfo('fk').

Масштабирующий фильтр, заданный как реальный вектор четной длины. lo должен удовлетворять условиям, необходимым для генерации ортогональной функции масштабирования. Вы не можете задать и масштабные вейвлет-фильтры, и wname вход.

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

Уровень преобразования, заданный как положительное целое число, меньше или равное floor(log2(numel(x))).

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

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

Пример: 'Fulltree',true возвращает полный вейвлет дерево пакетов

Опция для возврата полного вейвлета дерева пакетов, заданная как разделенная запятой пара, состоящая из 'FullTree' и любой из них false или true. Если вы задаете false, затем modwpt возвращает только терминальные (конечный уровень) вейвлет-пакетные узлы. Если вы задаете true, затем modwpt возвращает полный вейвлет дерево пакетов до заданного уровня.

Пример: 'Fulltree',true

Опция выравнивания по времени вейвлета пакетных коэффициентов с функций сигнала, заданная как разделенная запятой пара, состоящая из 'TimeAlign' и любой из них true ко времени выравнивания или false не выравнивать.

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

Пример: 'TimeAlign',true

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

свернуть все

Вейвлет вейвлет-пакета, возвращаемое как матрица с каждой строкой, содержащей упорядоченные по последовательности коэффициенты вейвлет. По умолчанию wpt содержит только уровень терминала для MODWPT. Уровень терминала по умолчанию является либо уровнем 4, либо floor(log2(numel(x))), в зависимости от того, что меньше. На уровне 4 wpt является 16-бай-numel(x) матрица. Для полного дерева, на уровне j, wpt является 2j+2-2-by-numel(x) матрица, с каждой строкой, содержащей пакетные коэффициенты по уровню и индексу. Аппроксимация полосы пропускания для n-й строки wpt на уровне j является [n12(j+1),n2(j+1)) циклы/выборка, где n = 1,2,... 2j.

Уровни преобразования, возвращенные как вектор. Уровни соответствуют строкам wpt. Если wpt содержит только коэффициенты терминального уровня, packetlevs - вектор констант, равный терминальному уровню. Если wpt содержит полный вейвлет таблицу пакетов, packetlevs - вектор с 2j элементы для каждого уровня, j. Чтобы выбрать все вейвлеты пакетные узлы на определенном уровне, используйте packetlevs с логической индексацией.

Центральные частоты приблизительных полос пропускания в wpt строки, возвращенные как вектор. Центральные частоты указаны в циклах/выборке. Чтобы преобразовать модули в циклы/единичное время, умножите cfreq по частоте дискретизации.

Энергия коэффициентов пакета вейвлета для wpt узлы, возвращенные как вектор. Сумма энергий (квадратов L2 норм) для вейвлета пакетов на каждом уровне равна энергии в сигнале.

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

Алгоритмы

modwpt выполняет дискретное преобразование вейвлета пакета и создает упорядоченное по последовательности вейвлетом дерево пакетов. Сравните упорядоченные по последовательности и нормальные (Paley) деревья.

Ссылки

[1] Персиваль, Д. Б., и А. Т. Уолден. Вейвлет для анализа временных рядов. Кембридж, Великобритания: Cambridge University Press, 2000.

[2] Уолден, А. Т. и А. Контрерас Кристан. «Исправленное по фазе нерешённый дискретный вейвлет преобразование пакета и его применение к интерпретации времени событий». Материалы Лондонского королевского общества A. Vol. 454, Issue 1976, 1998, pp. 2243-2266.

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

.

См. также

| |

Введенный в R2016a