modwt

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

Описание

пример

w = modwt(x) возвращает максимальное перекрытие дискретный вейвлет преобразовывает (MODWT) 1D сигнала с действительным знаком, x.

пример

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

пример

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

пример

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

пример

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

Примеры

свернуть все

Получите 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')

Получите 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.

Этот пример демонстрирует различия между функциями 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')

Возьмите 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.4346e-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.0813e-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')

Сделайте подобный график с помощью коэффициентов 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')

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

свернуть все

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

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

Типы данных: 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 должен удовлетворить условиям, необходимым, чтобы сгенерировать ортогональную функцию масштабирования. Можно задать Lo только если вы не задаете wname.

Фильтр вейвлета в виде ровной длины вектор с действительным знаком. Hi должен удовлетворить условиям, необходимым, чтобы сгенерировать ортогональный вейвлет. Можно задать Hi только если вы не задаете wname.

Преобразуйте уровень в виде положительного целого числа, меньше чем или равного floor(log2(length(x))).

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

свернуть все

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

Алгоритмы

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

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

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

1Nk=0N1Hj,kei2πnk/N

где

Hj,k=H2j1kmodNm=0j2G2mkmodN

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

1Nk=0N1Gj,kei2πnk/N

где

Gj,k=m=0j1G2mkmodN

Ссылки

[1] Персиваль, D. B. и А. Т. Уолден. Методы вейвлета для анализа временных рядов. Кембридж, Великобритания: Издательство Кембриджского университета, 2000.

[2] Персиваль, D. B. и Х. О. Мофджелд. “Анализ подприливных прибрежных колебаний уровня моря с помощью вейвлетов”. Журнал американской Статистической Ассоциации. Издание 92, Номер 439, сентябрь 1997, стр 868–880. doi: 10.2307/2965551.

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

Введенный в R2015b