Сравнение MODWT и MODWTMRA

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

Выберите sym6 вейвлет. Загрузите и постройте график сигнала электрокардиограммы (ЭКГ). Частота дискретизации для сигнала ЭКГ составляет 180 герц. Данные взяты из Percival and Walden (2000), p.125 (данные первоначально предоставлены Уильямом Константином и Пером Рейнхоллом, Университет Вашингтона).

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-many time points. Функция может быть выражена как линейная комбинация функции масштабирования ϕ(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)-many detail коэффициенты {dj,k} расширения. Каждая строка в wtecg содержит коэффициенты в другой шкале.

При приеме MODWT сигнала длины N, есть floor(log2(N))-many уровни разложения (по умолчанию). Коэффициенты детализации формируются на каждом уровне. Коэффициенты масштабирования возвращаются только для конечного уровня. В этом примере, с 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-many time points. Каждая строка в 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.

Ссылки

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

См. также

|