modwtmra

Мультирезолюционный анализ на основе MODWT

Описание

пример

mra = modwtmra(w) возвращает мультирезолюционный анализ (MRA) матрицы максимального перекрытия дискретного вейвлет (MODWT), w. Матрица MODWT, w, - выход modwt функция. По умолчанию, modwtmra принимает, что вы получили w использование 'sym4' вейвлет с периодической граничной обработкой.

пример

mra = modwtmra(w,wname) создает MRA с помощью вейвлета, соответствующего wname. The wname вейвлет должен быть таким же вейвлетом, используемым для получения MODWT.

пример

mra = modwtmra(w,Lo,Hi) создает MRA с помощью масштабирующего фильтра Lo и вейвлет Hi. The Lo и Hi фильтры должны быть теми же фильтрами, которые используются для получения MODWT.

пример

mra = modwtmra(___,'reflection') использует контур отражения в конструкции MRA с использованием любого из аргументов из предыдущих синтаксисов. Если вы задаете 'reflection', modwtmra принимает, что размерность столбца w четное и равное в два раза длине исходного сигнала.

Необходимо ввести весь вектор символов 'reflection'. Если вы добавили вейвлет с именем 'reflection' используя диспетчер вейвлет, необходимо переименовать этот вейвлет перед использованием этой опции. 'reflection' может быть помещен в любую позицию в списке входного параметра после x. По умолчанию, modwtmra использует периодическое расширение на контуре.

Примеры

свернуть все

Получите MODWTMRA простого сигнала timeseries и продемонстрировать идеальную реконструкцию.

Создайте сигнал timeseries

t = 1:10;
x = sin(2*pi*200*t);

Получите MODWT и MODWTMRA и суммируйте строки MODWTMRA.

m = modwt(x);
mra = modwtmra(m);
xrec = sum(mra);

Используйте максимум абсолютных значений, чтобы показать, что различие между исходным сигналом и реконструкцией чрезвычайно мала. Самое большое абсолютное значение находится в порядке 10-25, что демонстрирует идеальную реконструкцию.

max(abs(x-xrec))
ans = 5.5738e-25

Создайте MRA сигнала ECG до четвертого уровня с помощью db2 вейвлет. Данные взяты из Percival & Walden (2000), стр. 25 (данные первоначально предоставлены Уильямом Константином и Пером Рейнхоллом, Университет Вашингтона). Частота дискретизации для сигнала ЭКГ составляет 180 герц.

load wecg;
lev = 4;
wtecg = modwt(wecg,'db2',lev);
mra = modwtmra(wtecg,'db2');

Постройте график формы волны ЭКГ и MRA.

t = (0:numel(wecg)-1)/180;
subplot(6,1,1)
plot(t,wecg)
for kk = 2:lev+2
    subplot(6,1,kk)
    plot(t,mra(kk-1,:))
end
xlabel('Time (s)')
set(gcf,'Position',[0 0 500 700])

Figure contains 6 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line. Axes 3 contains an object of type line. Axes 4 contains an object of type line. Axes 5 contains an object of type line. Axes 6 contains an object of type line.

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

load soi
wtsoi = modwt(soi);
mrasoi = modwtmra(wtsoi);
plot(mrasoi(8,:))
title('Level 8 Details')

Figure contains an axes. The axes with title Level 8 Details contains an object of type line.

Получите MRA для данных обменного курса Deutsch Mark - U.S. Dollar с помощью минимального масштабирования полосы пропускания и вейвлет с четырьмя коэффициентами.

load DM_USD;
Lo = [0.4801755, 0.8372545, 0.2269312, -0.1301477];
Hi = qmf(Lo);
wdm = modwt(DM_USD,Lo,Hi);
mra = modwtmra(wdm,Lo,Hi);

Получите MRA для сигнала ECG с помощью 'reflection' обработка контуров. Данные взяты из Percival & Walden (2000), стр. 25 (данные первоначально предоставлены Уильямом Константином и Пером Рейнхоллом, Университет Вашингтона).

load wecg;
wtecg = modwt(wecg,'reflection');
mra = modwtmra(wtecg,'reflection');

Показать, что количество столбцов в MRA равно количеству элементов в исходном сигнале.

isequal(size(mra,2),numel(wecg))
ans = logical
   1

Загрузите 23-канальные данные EEG Espiga3 [3]. Каналы расположены столбчато. Данные отбираются с частотой дискретизации 200 Гц.

load Espiga3

Получите MRA мультисигнала.

w = modwt(Espiga3);
mra = modwtmra(w);

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

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

свернуть все

MODWT преобразование сигнала или мультисигнала до уровня LEV, заданное как матрица или трехмерный массив, соответственно. w является LEV + 1-by- N матрицей для MODWT сигнала N -point и LEV + 1-by- N -by- NC матрицей для MODWT N -by- NC мультисигнала. По умолчанию,imodwt принимает, что MODWT был получен с помощью 'sym4' вейвлет с периодической граничной обработкой.

Типы данных: single | double
Поддержка комплексного числа: Да

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

Фильтры, заданные как пара векторов с реальным значением четной длины. Lo - масштабирующий фильтр, и Hi - вейвлет. Lo и Hi должны быть те же фильтры, которые используются в анализе с modwt. Фильтры должны удовлетворять условиям для ортогонального вейвлета. Длины Lo и Hi должно быть равным. Посмотрите wfilters для получения дополнительной информации. Вы не можете задать оба вейвлет- wname и фильтровать пары Lo,Hi.

Масштабирующий фильтр, заданный как реальный вектор четной длины. Можно задать Lo только если вы не задаете wname. Lo должен быть таким же масштабным фильтром, используемым для получения MODWT с modwt функция.

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

свернуть все

Мультирезолюционный анализ, возвращенный как матричный или трехмерный массив. mra является LEV + 1-by- N матрицей или LEV + 1-by- N -by- NC массивом, где LEV - уровень MODWT и N - длина анализируемого сигнала. The kth строка mra содержит подробные сведения о kth уровень. The (LEV + 1)th строка mra содержит LEVth ровный уровень.

По умолчанию mra - тот же размер, что и входной w. Если вы задаете обработку контура отражения, то mra имеет половину размера столбца, размерности как вход w.

Ссылки

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

[2] Уитчер, Брэндон, Питер Гутторп и Дональд Б. Персиваль. Wavelet Analysis of Covariation With Application to Atmospheric Time Series (неопр.) (недоступная ссылка). Журнал геофизических исследований: Атмосферы 105, нет. D11 (16 июня 2000): 14941-62. https://doi.org/10.1029/2000JD900110.

[3] Меса, Гектор. «Адаптированные вейвлеты для обнаружения шаблона». В Прогресс Pattern Recognition, Image Analysis and Applications, под редакцией Альберто Санфелиу и Мануэля Лазо Кортеса, 3773: 933-44. Берлин, Гейдельберг: Спрингер Берлин Гейдельберг, 2005. https://doi.org/10.1007/11578079_96 .

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

..
Введенный в R2015b