modwtmra

Анализ мультиразрешения на основе MODWT

Описание

пример

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

пример

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

пример

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

пример

mra = modwtmra(___,'reflection') использует отражательное граничное условие в конструкции MRA, использующего любой из аргументов от предыдущих синтаксисов. Если вы задаете 'reflection', 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), p.125 (данные, первоначально обеспеченные Уильямом Константином и На Reinhall, Вашингтонский университет). Частота дискретизации для сигнала ECG составляет 180 герц.

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

Постройте форму волны ECG и 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])

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

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

Получите MRA для Деуча Марка - данные об обменном курсе доллара США с помощью минимального масштабирования пропускной способности и фильтров вейвлета с четырьмя коэффициентами.

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), p.125 (данные, первоначально обеспеченные Уильямом Константином и На Reinhall, Вашингтонский университет).

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

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

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

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

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

Возьмите 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))-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')

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

свернуть все

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

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

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

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

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

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

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

свернуть все

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

Выход mra L +1-by-N матрица. k th строка mra содержит детали для k th уровень. (L +1) th строка mra содержит L th сглаженный уровень.

Ссылки

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

[2] Whitcher, B., П. Гатторп и Д. Б. Персиваль. "Ковариационный анализ вейвлета с приложением к атмосферным временным рядам". Журнал Геофизического Исследования, Издания 105, 2000, стр 14941–14962.

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

Смотрите также

|

Введенный в R2015b