modwt

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

Описание

пример

w = modwt(x) возвращает максимальное перекрытие дискретный вейвлет преобразовывает (MODWT) xX может быть действительное - или комплексный вектор или матрица. Если x матрица, modwt работает со столбцами x. modwt вычисляет вейвлет, преобразовывают вниз, чтобы выровнять floor(log2(length(x))) если x вектор и floor(log2(size(x,1))) если x матрица. По умолчанию, modwt использует Добечи меньше всего - асимметричный вейвлет с четырьмя исчезающими моментами ('sym4') и периодическая граничная обработка.

пример

w = modwt(x,wname) использует ортогональный вейвлет, wname, для MODWT.

пример

w = modwt(x,Lo,Hi) использует масштабирующийся фильтр, Lo, и фильтр вейвлета, Hi, вычислить MODWT. Эти фильтры должны удовлетворить условиям для ортогонального вейвлета. Вы не можете задать оба wname и пара фильтра, Lo и Hi.

пример

w = modwt(___,lev) вычисляет MODWT вниз к заданному уровню, lev, использование любого из аргументов от предыдущих синтаксисов.

пример

w = modwt(___,'reflection') вычисляет MODWT использование отражательной граничной обработки. Другие входные параметры могут быть любым из аргументов от предыдущих синтаксисов. Прежде, чем вычислить вейвлет преобразовывают, modwt расширяет сигнал симметрично в терминальном конце дважды длине сигнала. Количество вейвлета и масштабных коэффициентов это modwt возвраты равны дважды длине входного сигнала. По умолчанию сигнал периодически расширяется.

Необходимо ввести целый вектор символов 'reflection'. Если вы добавили вейвлет под названием 'reflection' с помощью менеджера по вейвлету необходимо переименовать тот вейвлет до использования этой опции. 'reflection' может быть помещен в любое положение в списке входных параметров после x.

Примеры

свернуть все

Получите MODWT электрокардиограммы (ECG) использование сигнала sym4 по умолчанию вейвлет вниз к максимальному уровню. Данные взяты из Percival & Walden (2000), p.125 (данные, первоначально обеспеченные Уильямом Константином и На Reinhall, Вашингтонский университет).

load wecg;
wtecg = modwt(wecg);
whos wtecg
  Name        Size               Bytes  Class     Attributes

  wtecg      12x2048            196608  double              

Первые одиннадцать строк wtecg коэффициенты вейвлета для шкал 21 к 211. Итоговая строка содержит масштабные коэффициенты в шкале 211. Постройте деталь (вейвлет) коэффициенты для шкалы 23.

plot(wtecg(3,:))
title('Level 3 Wavelet Coefficients')

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

Получите MODWT южных данных об индексе Колебания с db2 вейвлет вниз к максимальному уровню.

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

Получите MODWT немецкой марки - данные об обменном курсе доллара США с помощью длины Фейера-Коровкина 8 масштабирований и фильтры вейвлета.

load DM_USD;
[Lo,Hi] = wfilters('fk8');
wdm = modwt(DM_USD,Lo,Hi);

Получите MODWT сигнала ECG вниз, чтобы масштабироваться 24, который соответствует уровню четыре. Используйте sym4 по умолчанию вейвлет. Данные взяты из Percival & Walden (2000), p.125 (данные, первоначально обеспеченные Уильямом Константином и На Reinhall, Вашингтонский университет).

load wecg;
wtecg = modwt(wecg,4);
whos wecg wtecg
  Name          Size              Bytes  Class     Attributes

  wecg       2048x1               16384  double              
  wtecg         5x2048            81920  double              

Размер строки wtecg L+1, где в этом случае уровень (L) равняется 4. Размер столбца совпадает с количеством входных выборок.

Получите MODWT сигнала ECG использование отражательной граничной обработки. Используйте sym4 по умолчанию вейвлет и получает преобразование вниз к уровню 4. Данные взяты из Percival & Walden (2000), p.125 (данные, первоначально обеспеченные Уильямом Константином и На Reinhall, Вашингтонский университет).

load wecg;
wtecg = modwt(wecg,4,'reflection');
whos wecg wtecg
  Name          Size               Bytes  Class     Attributes

  wecg       2048x1                16384  double              
  wtecg         5x4096            163840  double              

wtecg имеет 4 096 столбцов, который является дважды длиной входного сигнала, wecg.

Загрузите 23 канала данные EEG Espiga3 [3]. Каналы располагаются по столбцам. Данные производятся на уровне 200 Гц.

load Espiga3

Вычислите максимальное перекрытие, которое дискретный вейвлет преобразовывает вниз к максимальному уровню.

wt = modwt(Espiga3);

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

sigN2 = vecnorm(Espiga3).^2;
wtN2 = sum(squeeze(vecnorm(wt,2,2).^2));
bar(1:23,log(sigN2))
hold on
scatter(1:23,log(wtN2),'filled','SizeData',100)
alpha(0.75)
legend('Signal Energy','Energy in Wavelet Coefficients', ...
        'Location','NorthWest')
xlabel('Channel')
ylabel('ln(squared energy)')

Figure contains an axes. The axes contains 2 objects of type bar, scatter. These objects represent Signal Energy, Energy in Wavelet Coefficients.

Этот пример демонстрирует различия между функциями MODWT и MODWTMRA. Разделы MODWT энергия сигнала через коэффициенты детали и масштабные коэффициенты. Проекты MODWTMRA сигнал на подпространства вейвлета и масштабирующееся подпространство.

Выберите sym6 вейвлет. Загрузите и постройте электрокардиограмму (ECG) сигнал. Частота дискретизации для сигнала ECG составляет 180 герц. Данные взяты от Персиваля и Уолдена (2000), p.125 (данные, первоначально обеспеченные Уильямом Константином и На Reinhall, Вашингтонский университет).

load wecg
t = (0:numel(wecg)-1)/180;
wv = 'sym6';
plot(t,wecg)
grid on
title(['Signal Length = ',num2str(numel(wecg))])
xlabel('Time (s)')
ylabel('Amplitude')

Figure contains an axes. The axes with title Signal Length = 2048 contains an object of type line.

Возьмите MODWT сигнала.

wtecg = modwt(wecg,wv);

Входные данные являются выборками функции f(x) оцененный в N- много моментов времени. Функция может быть описана как линейная комбинация масштабирующейся функции ϕ(x) и вейвлет ψ(x)в различных шкалах и переводах: f(x)=k=0N-1ck2-J0/2ϕ(2-J0x-k)+j=1J0fj(x) где fj(x)=k=0N-1dj,k2-j/2ψ(2-jx-k) и J0 количество уровней разложения вейвлета. Первая сумма является крупным приближением шкалы сигнала, и fj(x) детали в последовательных шкалах. MODWT возвращается N- много коэффициентов {ck}и (J0×N)- много коэффициентов детали {dj,k} из расширения. Каждая строка в wtecg содержит коэффициенты в различной шкале.

При взятии MODWT сигнала длины N, существуют floor(log2(N))- много уровней разложения (по умолчанию). Коэффициенты детали производятся на каждом уровне. Масштабные коэффициенты возвращены только для итогового уровня. В этом примере, с тех пор N=2048, J0=пол(log2(2048))=11 и количество строк в wtecg J0+1=11+1=12.

Разделы MODWT энергия через различные шкалы и масштабные коэффициенты: ||X||2=j=1J0||Wj||2+||VJ0||2 где X входные данные, Wj коэффициенты детали в шкале j, и VJ0 масштабные коэффициенты итогового уровня.

Вычислите энергию в каждой шкале и оцените их сумму.

energy_by_scales = sum(wtecg.^2,2);
Levels = {'D1';'D2';'D3';'D4';'D5';'D6';'D7';'D8';'D9';'D10';'D11';'A11'};
energy_table = table(Levels,energy_by_scales);
disp(energy_table)
    Levels     energy_by_scales
    _______    ________________

    {'D1' }         14.063     
    {'D2' }         20.612     
    {'D3' }         37.716     
    {'D4' }         25.123     
    {'D5' }         17.437     
    {'D6' }         8.9852     
    {'D7' }         1.2906     
    {'D8' }         4.7278     
    {'D9' }         12.205     
    {'D10'}         76.428     
    {'D11'}         76.268     
    {'A11'}         3.4192     
energy_total = varfun(@sum,energy_table(:,2))
energy_total=table
    sum_energy_by_scales
    ____________________

           298.28       

Подтвердите, что MODWT является сохранением энергии путем вычисления энергии сигнала и сравнения его с суммой энергий по всем шкалам.

energy_ecg = sum(wecg.^2);
max(abs(energy_total.sum_energy_by_scales-energy_ecg))
ans = 7.4402e-10

Возьмите MODWTMRA сигнала.

mraecg = modwtmra(wtecg,wv);

MODWTMRA возвращает проекции функции f(x) на различные подпространства вейвлета и итоговый пробел масштабирования. Таким образом, MODWTMRA возвращается k=0N-1ck2-J0/2ϕ(2-J0x-k)и J0- многие {fj(x)}оцененный в N- много моментов времени. Каждая строка в mraecg проекция f(x) на различное подпространство. Это означает, что исходный сигнал может быть восстановлен путем добавления всех проекций. Это не верно в случае MODWT. Добавление коэффициентов в wtecg не восстановит исходный сигнал.

Выберите момент времени, добавьте проекции f(x) оцененный в то время указывают и соответствуют исходному сигналу.

time_point = 1000;
abs(sum(mraecg(:,time_point))-wecg(time_point))
ans = 3.0846e-13

Подтвердите, что, в отличие от MODWT, MODWTMRA не является сохраняющим энергию преобразованием.

energy_ecg = sum(wecg.^2);
energy_mra_scales = sum(mraecg.^2,2);
energy_mra = sum(energy_mra_scales);
max(abs(energy_mra-energy_ecg))
ans = 115.7053

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

plot(t,wecg,'b')
hold on
plot(t,mraecg(4,:),'-')
hold off
grid on
xlim([4 8])
legend('Signal','Projection','Location','northwest')
xlabel('Time (s)')
ylabel('Amplitude')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Signal, Projection.

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

plot(t,wecg,'b')
hold on
plot(t,wtecg(4,:),'-')
hold off
grid on
xlim([4 8])
legend('Signal','Coefficients','Location','northwest')
xlabel('Time (s)')
ylabel('Amplitude')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Signal, Coefficients.

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

свернуть все

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

Типы данных: single | double
Поддержка комплексного числа: Да

Анализ вейвлета в виде одного из следующего:

  • 'haar' — Вейвлет Хаара

  • 'dbN' — Экстремальный вейвлет фазы Daubechies с N исчезающие моменты, где N положительное целое число от 1 до 45.

  • 'symN' — Вейвлет Symlets с N исчезающие моменты, где N положительное целое число от 2 до 45.

  • 'coifN' — Вейвлет Coiflets с N исчезающие моменты, где N положительное целое число от 1 до 5.

  • 'fkN' — Вейвлет Fejér-Korovkin с N коэффициенты, где N = 4, 6, 8, 14, 18 и 22.

Фильтры в виде пары ровной длины векторы с действительным знаком. Lo масштабирующийся фильтр и Hi фильтр вейвлета. Фильтры должны удовлетворить условиям для ортогонального вейвлета. Длины Lo и Hi должно быть равным. Смотрите wfilters для получения дополнительной информации. Вы не можете задать обоих вейвлет wname и пара фильтра Lo,Hi.

Преобразуйте уровень в виде положительного целого числа, меньше чем или равного floor(log2(N)), где N = length(x) если x вектор или N = size(x,1) если x матрица. Если незаданный, lev значения по умолчанию к floor(log2(N)).

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

свернуть все

Преобразование MODWT xW содержит коэффициенты вейвлета и коэффициенты масштабирования итогового уровня x. Если x вектор, w lev+1-by-N матрица. Если x матрица, w lev+1-by-N-by-NC массив, где NC является количеством столбцов в x. N равен длине входного сигнала, если вы не задаете 'reflection' граничная обработка, в этом случае N является дважды длиной входного сигнала. k th строка массива, w, содержит коэффициенты вейвлета для шкалы 2k (шкала вейвлета 2 (k-1)). Финал, (lev+1) th, строка содержит масштабные коэффициенты для шкалы 2lev.

Алгоритмы

Стандартный алгоритм для MODWT реализует круговую свертку непосредственно во временном интервале. Эта реализация MODWT выполняет круговую свертку в области Фурье. Вейвлет и масштабирующий коэффициенты фильтра на уровне j вычисляется путем взятия обратного дискретного преобразования Фурье (DFT) продукта ДПФ, ДПФ в продукте являются ДПФ сигнала и ДПФ j th вейвлет уровня или масштабирующий фильтр.

Позвольте Hk, и Gk обозначают длину ДПФ N вейвлета MODWT и масштабирующихся фильтров, соответственно. Позвольте j обозначить, что уровень и N обозначают объем выборки.

j th фильтр вейвлета уровня задан

1Nk=0N1Hj,kei2πnk/N

где

Hj,k=H2j1kmodNm=0j2G2mkmodN

j th фильтр масштабирования уровня

1Nk=0N1Gj,kei2πnk/N

где

Gj,k=m=0j1G2mkmodN

Ссылки

[1] Персиваль, Дональд Б. и Эндрю Т. Уолден. Методы вейвлета для анализа временных рядов. Кембриджский ряд в статистической и вероятностной математике. Кембридж  ; Нью-Йорк: Издательство Кембриджского университета, 2000.

[2] Персиваль, Дональд Б. и Гарольд О. Мофджелд. “Анализ Подприливных Прибрежных Колебаний Уровня моря Используя Вейвлеты”. Журнал американской Статистической Ассоциации 92, № 439 (сентябрь 1997): 868–80. https://doi.org/10.1080/01621459.1997.10474042.

[3] Мезаструктура, Гектор. “Адаптированные Вейвлеты для Обнаружения Шаблона”. Происходящий в Распознавании образов, Анализе изображения и Приложениях, отредактированных Альберто Санфелиу и Мануелем Лазо Кортесом, 3773:933–44. Берлин, Гейдельберг: Спрингер Берлин Гейдельберг, 2005. https://doi.org/10.1007/11578079_96.

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

Введенный в R2015b