modwt

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

Синтаксис

w = modwt(x)
w = modwt(x,wname)
w = modwt(x,Lo,Hi)
w = modwt(___,lev)
w = modwt(___,'reflection')

Описание

пример

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 по умолчанию вниз к максимальному уровню.

load wecg;
wtecg = modwt(wecg);

wtecg является 12 2048 матрицей. Первые одиннадцать строк являются коэффициентами вейвлета для шкал 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' по умолчанию.

load wecg;
wtecg = modwt(wecg,4);

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

Получите MODWT сигнала ECG использование отражательной граничной обработки. Используйте вейвлет 'sym4' по умолчанию и получите преобразование вниз к уровню 4.

load wecg;
wtecg = modwt(wecg,4,'reflection');

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

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

Выберите 'sym6' вейвлет. Загрузите и постройте форму волны ECG. Данные о ECG взяты из Базы данных Аритмии MIT-BIH.

load mit200
wv = 'sym6';
plot(ecgsig)
grid on
title(['Signal Length = ',num2str(length(ecgsig))])

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

wtecg = modwt(ecgsig,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, существуют пол(журнал2(N))- много уровней разложения (по умолчанию). Коэффициенты детали производятся на каждом уровне. Масштабные коэффициенты возвращены только для итогового уровня. В этом примере, с тех пор N=10000, J0=пол(журнал2(10000))=13 и количество строк в wtecg J0+1=13+1=14.

Разделы 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';'D12';'D13';'A13'};
energy_table = table(Levels,energy_by_scales);
disp(energy_table)
    Levels    energy_by_scales
    ______    ________________

    'D1'          0.31592     
    'D2'           2.6504     
    'D3'           28.802     
    'D4'           159.37     
    'D5'            300.5     
    'D6'           431.33     
    'D7'           444.93     
    'D8'           182.37     
    'D9'           45.381     
    'D10'          11.578     
    'D11'          19.809     
    'D12'          4.5406     
    'D13'           3.308     
    'A13'          192.46     
energy_total = varfun(@sum,energy_table(:,2))
energy_total=1×1 table
    sum_energy_by_scales
    ____________________

           1827.3       

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

energy_ecg = sum(ecgsig.^2);
max(abs(energy_total.sum_energy_by_scales-energy_ecg))
ans = 4.0875e-09

Возьмите 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))-ecgsig(time_point))
ans = 3.0942e-13

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

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

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

figure
plot(ecgsig)
hold on
plot(mraecg(4,:),'-')
grid on
xlim([4000 5000])
legend('Signal','Projection','Location','northwest')

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

figure
plot(ecgsig)
hold on
plot(wtecg(4,:),'-')
grid on
xlim([4000 5000])
legend('Signal','Coefficients','Location','northwest')

Ссылки

Голдбергер А. Л., Л. А. Н. Амарал, L. Стекло, Дж. М. Гаусдорф, P. Ch. Иванов, Р. Г. Марк, Дж. Э. Митус, Г. Б. Муди, C-K Пенг, Х. Э. Стэнли. "PhysioBank, PhysioToolkit и PhysioNet: Компоненты Нового Ресурса Исследования для Комплексных Физиологических Сигналов". Циркуляция 101. Vol.23, e215-e220, 2000. http://circ.ahajournals.org/cgi/content/full/101/23/e215

Капризный, G. B. "Оценивая ECG Анализаторы". http://www.physionet.org/physiotools/wfdb/doc/wag-src/eval0.tex

Муди Г. Б., Р. Г. Марк. "Влияние Базы данных Аритмии MIT-BIH". Инженер IEEE в Med и Biol. Издание 20, Номер 3, 2001), стр 45-50.

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

свернуть все

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

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

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

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

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

  • Вейвлет Daubechies фазы 'dbN' — Extremal с 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, стр 868–880.

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2015b