exponenta event banner

modwt

Максимальное перекрытие дискретного вейвлет-преобразования

Описание

пример

w = modwt(x) возвращает максимальное перекрывающееся дискретное вейвлет-преобразование (MODWT) x. x может быть реальным или комплекснозначным вектором или матрицей. Если x является матрицей, modwt работает на столбцах x. modwt вычисляет вейвлет-преобразование до уровня floor(log2(length(x))) если x является вектором и floor(log2(size(x,1))) если x является матрицей. По умолчанию modwt использует наименее асимметричный вейвлет Daubechies с четырьмя моментами исчезновения ('sym4') и периодическая обработка границ.

пример

w = modwt(x,wname) использует ортогональный вейвлет, wname, для MODWT.

пример

w = modwt(x,Lo,Hi) использует фильтр масштабирования, Loи вейвлет-фильтр, Hi, для вычисления MODWT. Эти фильтры должны удовлетворять условиям для ортогонального вейвлета. Вы не можете указать оба wname и пару фильтров, Lo и Hi.

пример

w = modwt(___,lev) вычисляет MODWT до заданного уровня, lev, используя любой из аргументов из предыдущих синтаксисов.

пример

w = modwt(___,'reflection') вычисляет MODWT, используя обработку границ отражения. Другими входами могут быть любые аргументы из предыдущих синтаксисов. Перед вычислением вейвлет-преобразования modwt расширяет сигнал симметрично на конце терминала до удвоенной длины сигнала. Количество коэффициентов вейвлета и масштабирования, modwt возвращает значение, равное удвоенной длине входного сигнала. По умолчанию сигнал периодически расширяется.

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

Примеры

свернуть все

Получение MODWT сигнала электрокардиограммы (ЭКГ) с использованием значения по умолчанию sym4 вейвлет вниз до максимального уровня. Данные взяты из Percival & Walden (2000), стр. 125 (данные первоначально предоставлены Уильямом Константином и Пером Рейнхаллом, Вашингтонский университет).

load wecg;
wtecg = modwt(wecg);
whos wtecg
  Name        Size               Bytes  Class     Attributes

  wtecg      12x2048            196608  double              

Первые одиннадцать рядов wtecg - вейвлет-коэффициенты для шкал 21- 211. Конечная строка содержит масштабные коэффициенты в масштабе 211. Постройте график коэффициентов детализации (вейвлет) для шкалы 23.

plot(wtecg(3,:))
title('Level 3 Wavelet Coefficients')

Figure contains an axes. The axes with title Level 3 Wavelet Coefficients contains an object of type line.

Получение данных MODWT индекса южных колебаний с помощью db2 вейвлет вниз до максимального уровня.

load soi;
wsoi = modwt(soi,'db2');

Получение MODWT данных обменного курса Deutsche Mark - доллар США с помощью масштабирования длины 8 и вейвлет-фильтров Фейера-Коровкина.

load DM_USD;
[Lo,Hi] = wfilters('fk8');
wdm = modwt(DM_USD,Lo,Hi);

Получить MODWT сигнала ЭКГ до шкалы 24, соответствующей четвертому уровню. Использовать значение по умолчанию sym4 вейвлет. Данные взяты из Percival & Walden (2000), стр. 125 (данные первоначально предоставлены Уильямом Константином и Пером Рейнхаллом, Вашингтонский университет).

load wecg;
wtecg = modwt(wecg,4);
whos wecg wtecg
  Name          Size              Bytes  Class     Attributes

  wecg       2048x1               16384  double              
  wtecg         5x2048            81920  double              

Размер строки wtecg является L + 1, где в этом случае уровень (L) равен 4. Размер столбца соответствует количеству входных выборок.

Получение MODWT сигнала ЭКГ с помощью обработки границ отражения. Использовать значение по умолчанию sym4 вейвлет и получить преобразование до уровня 4. Данные взяты из Percival & Walden (2000), стр. 125 (данные первоначально предоставлены Уильямом Константином и Пером Рейнхаллом, Вашингтонский университет).

load wecg;
wtecg = modwt(wecg,4,'reflection');
whos wecg wtecg
  Name          Size               Bytes  Class     Attributes

  wecg       2048x1                16384  double              
  wtecg         5x4096            163840  double              

wtecg имеет 4096 столбцов, что в два раза больше длины входного сигнала, wecg.

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

load Espiga3

Вычислите максимальное перекрывающееся дискретное вейвлет-преобразование до максимального уровня.

wt = modwt(Espiga3);

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

sigN2 = vecnorm(Espiga3).^2;
wtN2 = sum(squeeze(vecnorm(wt,2,2).^2));
bar(1:23,log(sigN2))
hold on
scatter(1:23,log(wtN2),'filled','SizeData',100)
alpha(0.75)
legend('Signal Energy','Energy in Wavelet Coefficients', ...
        'Location','NorthWest')
xlabel('Channel')
ylabel('ln(squared energy)')

Figure contains an axes. The axes contains 2 objects of type bar, scatter. These objects represent Signal Energy, Energy in Wavelet Coefficients.

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

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-кратных временных точках. Функция может быть выражена в виде линейной комбинации масштабной функции (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)) -many (по умолчанию). Коэффициенты детализации формируются на каждом уровне. Коэффициенты масштабирования возвращаются только для конечного уровня. В этом примере, поскольку N = 2048, J0 = floor (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-many {fj (x)}, оцененные в N-кратных временных точках. Каждая строка в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.

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

свернуть все

Входной сигнал, заданный как вектор или матрица. Если x является вектором, x должен иметь по крайней мере два элемента. Если x - матрица, размер строки x должно быть не менее 2.

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

Анализ вейвлета, указанного как одно из следующих:

  • 'haar' - Вейвлет Хаара

  • 'dbN' - Экстремальная фаза Daubechies вейвлет с N исчезающие моменты, где N является положительным целым числом от 1 до 45.

  • 'symN' - Симлеты вейвлет с N исчезающие моменты, где N является положительным целым числом от 2 до 45.

  • 'coifN' - Coiflets вейвлет с N исчезающие моменты, где N является положительным целым числом от 1 до 5.

  • 'fkN' - Фежер-Коровкин вейвлет с N коэффициенты, где N = 4, 6, 8, 14, 18 и 22.

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

Уровень преобразования, заданный как положительное целое число, меньшее или равное floor(log2(N)), где N = length(x) если x является вектором, или N = size(x,1) если x является матрицей. Если не указано, lev по умолчанию: floor(log2(N)).

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

свернуть все

Преобразование MODWT x. w содержит вейвлет-коэффициенты и коэффициенты масштабирования конечного уровня x. Если x является вектором, w является levМатрица + 1 на N. Еслиx является матрицей, w является lev+ 1 по N по NC-массиву, где NC - количество столбцов вx. N равно длине входного сигнала, если не указано 'reflection' обработка границ, и в этом случае N в два раза превышает длину входного сигнала. k-я строка массива, wсодержит вейвлет-коэффициенты для шкалы 2k (вейвлет-шкала 2 (k-1)). Финал, (lev+ 1), строка содержит коэффициенты масштабирования для шкалы 2lev.

Алгоритмы

Стандартный алгоритм для MODWT реализует круговую свертку непосредственно во временной области. Эта реализация MODWT выполняет круговую свертку в области Фурье. Коэффициенты вейвлет-фильтра и фильтра масштабирования на уровне j вычисляются путем принятия обратного дискретного преобразования Фурье (DFT) произведения DFT. DFT в произведении являются DFT сигнала и DFT вейвлет-фильтра или масштабного фильтра j-го уровня.

Пусть Hk и Gk обозначают длину N DFT импульсных и масштабных фильтров MODWT соответственно. Пусть j обозначает уровень, а N обозначает размер выборки.

Вейвлет-фильтр j-го уровня определяется

1N∑k=0N−1Hj,kei2πnk/N

где

Hj,k=H2j−1kmodN∏m=0j−2G2mkmodN

Фильтр масштабирования j-го уровня:

1N∑k=0N−1Gj,kei2πnk/N

где

Gj,k=∏m=0j−1G2mkmodN

Ссылки

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

[2] Персиваль, Дональд Б. и Гарольд О. Мофьелд. «Анализ субтидальных колебаний уровня моря в прибрежной зоне с использованием вейвлетов». Журнал Американской статистической ассоциации, № 92, № 439 (сентябрь 1997 года): 868-80. https://doi.org/10.1080/01621459.1997.10474042.

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

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

..
Представлен в R2015b