Этот пример демонстрирует различия между функциями 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);
Входные данные являются выборками функции оцененный в - много моментов времени. Функция может быть выражена как линейная комбинация масштабирующейся функции и вейвлет в различных шкалах и переводах: где и количество уровней разложения вейвлета. Первая сумма является крупным приближением шкалы сигнала, и детали в последовательных шкалах. MODWT возвращается - много коэффициентов и - много коэффициентов детали из расширения. Каждая строка в wtecg
содержит коэффициенты в различной шкале.
При взятии MODWT сигнала длины , существуют - много уровней разложения (по умолчанию). Коэффициенты детали производятся на каждом уровне. Масштабные коэффициенты возвращены только для итогового уровня. В этом примере, с тех пор , и количество строк в wtecg
.
Разделы 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.4346e-10
Возьмите MODWTMRA сигнала.
mraecg = modwtmra(wtecg,wv);
MODWTMRA возвращает проекции функции на различные подпространства вейвлета и итоговый пробел масштабирования. Таким образом, MODWTMRA возвращается и - многие оцененный в - много моментов времени. Каждая строка в mraecg
проекция на различное подпространство. Это означает, что исходный сигнал может быть восстановлен путем добавления всех проекций. Это не верно в случае MODWT. Добавление коэффициентов в wtecg
не восстановит исходный сигнал.
Выберите момент времени, добавьте проекции оцененный в то время указывают и соответствуют исходному сигналу.
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')
[1] Персиваль, D. B. и А. Т. Уолден. Методы вейвлета для анализа временных рядов. Кембридж, Великобритания: Издательство Кембриджского университета, 2000.