В этом примере показаны различия между функциями MODWT и MODWTMRA. MODWT разделяет энергию сигнала по коэффициентам детализации и коэффициентам масштабирования. MODWTMRA проецирует сигнал на вейвлет-подпространства и масштабирование подпространства.
Выберите sym6 вейвлет. Загрузить и построить график сигнала электрокардиограммы (ЭКГ). Частота дискретизации сигнала ЭКГ составляет 180 герц. Данные взяты из Percival and Walden (2000), стр. 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')

Возьмите MODWT сигнала.
wtecg = modwt(wecg,wv);
Входные данные являются выборками функции ), оцениваемой в N-кратных временных точках. Функция может быть выражена в виде линейной комбинации масштабной функции (и при различных масштабах и +∑j=1J0fj (=∑k=0N-1dj,k2-j/2ψ (2-jx-k) и J0 - количество уровней вейвлет-разложения. Первая сумма является грубой масштабной аппроксимацией а fj (x) являются деталями на последовательных шкалах. MODWT возвращает коэффициенты числа N и коэффициенты (J0 × N) wtecg содержит коэффициенты с другой шкалой.
При взятии MODWT сигнала длиной существуют уровни разложения floor (log2 (N)) -many (по умолчанию). Коэффициенты детализации формируются на каждом уровне. Коэффициенты масштабирования возвращаются только для конечного уровня. В этом примере, 2048)) = 11 и количество строк вwtecg является + 1 = 12.
MODWT разделяет энергию по различным масштабам и коэффициентам масштабирования: , где - входные данные, - коэффициенты детализации в масштабе , и - коэффициенты масштабирования конечного уровня.
Вычислите энергию в каждом масштабе и вычислите их сумму.
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 возвращает проекции функции ) на различные вейвлет-подпространства и конечное пространство масштабирования. То есть MODWTMRA возвращает 2-J0x-k) и (x)}, в N-кратных временных точках. Каждая строка вmraecg - проекция ) на другое подпространство. Это означает, что исходный сигнал может быть восстановлен путем сложения всех проекций. Это неверно в случае MODWT. Добавление коэффициентов вwtecg не восстановит исходный сигнал.
Выберите момент времени, добавьте проекции ), вычисленные в этот момент времени, и сравните с исходным сигналом.
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')

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

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