dwt

Одноуровневое 1-D дискретное вейвлет

Описание

пример

[cA,cD] = dwt(x,wname) возвращает одноуровневое дискретное вейвлет (DWT) вектора x использование вейвлета, заданного как wname. Вейвлет должен быть распознан wavemngr. dwt возвращает вектор коэффициентов приближения cA и вектор коэффициентов детализации cD DWT.

Примечание

Если ваше приложение требует многоуровневого вейвлет, рассмотрите использование wavedec.

пример

[cA,cD] = dwt(x,LoD,HiD) возвращает одноуровневый DWT с помощью заданных lowpass и highpass фильтров разложения вейвлет LoD и HiD, соответственно.

[cA,cD] = dwt(___,'mode',extmode) возвращает одноуровневый DWT с заданным режимом расширения extmode. Для получения дополнительной информации см. dwtmode. Этот аргумент может быть добавлен к любому из предыдущих входных синтаксисов.

Примечание

Для gpuArray входы, поддерживаемые режимы 'symh' ('sym') и 'per'. Все 'mode' опции, кроме 'per' преобразуются в 'symh'. См. пример Одноуровневое дискретное вейвлет на графическом процессоре.

Примеры

свернуть все

Получите одноуровневый DWT шумного доплеровского сигнала с помощью имени вейвлета.

load noisdopp;
[cA,cD] = dwt(noisdopp,'sym4');

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

xrec = idwt(cA,zeros(size(cA)),'sym4');
plot(noisdopp)
hold on
grid on
plot(xrec)
legend('Original','Reconstruction')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original, Reconstruction.

Получите одноуровневый DWT шумного доплеровского сигнала с помощью вейвлет (highpass) и масштабирования (lowpass).

load noisdopp;
[LoD,HiD] = wfilters('bior3.5','d');
[cA,cD] = dwt(noisdopp,LoD,HiD);

Создайте банк фильтров DWT, который можно применить к шумному доплеровскому сигналу с помощью того же вейвлета. Получите фильтры highpass и lowpass из набора фильтров.

len = length(noisdopp);
fb = dwtfilterbank('SignalLength',len,'Wavelet','bior3.5');
[lo,hi] = filters(fb);

Для bior3.5 вейвлет, lo и hi являются матрицами 12 на 2. lo являются lowpass и hi являются высокочастотными фильтрами. Первые столбцы lo и hi используются для анализа, а вторые столбцы используются для синтеза. Сравнение первого столбца lo и hi с LoD и HiD соответственно. Подтвердите, что они равны.

disp('Lowpass Analysis Filters')
Lowpass Analysis Filters
[lo(:,1) LoD']
ans = 12×2

   -0.0138   -0.0138
    0.0414    0.0414
    0.0525    0.0525
   -0.2679   -0.2679
   -0.0718   -0.0718
    0.9667    0.9667
    0.9667    0.9667
   -0.0718   -0.0718
   -0.2679   -0.2679
    0.0525    0.0525
      ⋮

disp('Highpass Analysis Filters')
Highpass Analysis Filters
[hi(:,1) HiD']
ans = 12×2

         0         0
         0         0
         0         0
         0         0
   -0.1768   -0.1768
    0.5303    0.5303
   -0.5303   -0.5303
    0.1768    0.1768
         0         0
         0         0
      ⋮

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

[psidft,f,phidft] = freqz(fb);
level = 1;
plot(f(len/2+1:end),abs(phidft(level,len/2+1:end)))
hold on
plot(f(len/2+1:end),abs(psidft(level,len/2+1:end)))
grid on
legend('Scaling Filter','Wavelet Filter')
title('First-Level One-sided Frequency Responses')
xlabel('Normalized Frequency (cycles/sample)')
ylabel('Magnitude')

Figure contains an axes. The axes with title First-Level One-sided Frequency Responses contains 2 objects of type line. These objects represent Scaling Filter, Wavelet Filter.

Обратитесь к разделу Поддержка GPU по версии (Parallel Computing Toolbox), чтобы узнать, какие графические процессоры поддерживаются.

Загрузите шумный сигнал Доплера. Поместите сигнал на графический процессор с помощью gpuArray. Сохраните текущий режим расширения.

load noisdopp
noisdoppg = gpuArray(noisdopp);
origMode = dwtmode('status','nodisp');

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

dwtmode('zpd','nodisp')
[cA,cD] = dwt(noisdoppg,'db2');

Текущий режим расширения zpd не поддерживается для gpuArray вход. Поэтому DWT выполняется вместо этого с помощью sym режим расширения. Подтвердите это, взяв DWT noisdoppg с установленным на sym режимом расширения и сравните с предыдущим результатом.

[cAsym,cDsym] = dwt(noisdoppg,'db2','mode','sym');
[max(abs(cA-cAsym)) max(abs(cD-cDsym))]
ans =

     0     0

Неподдерживаемый режим расширения, заданный в качестве входного параметра, преобразуется в 'sym'. Подтвердите, что взятие DWT noisdoppg с 'mode' set в неподдерживаемом режиме также по умолчанию задает значение sym режим расширения.

[cA,cD] = dwt(noisdoppg,'db2','mode','spd');
[max(abs(cA-cAsym)) max(abs(cD-cDsym))]
ans =

     0     0

Измените текущий режим внутреннего абонента на периодический. Получите одноуровневое дискретное вейвлет сигнала на графическом процессоре с помощью db2 вейвлет.

dwtmode('per','nodisp')
[cA,cD] = dwt(noisdoppg,'db2');

Подтвердите текущий режим расширения per поддерживается для gpuArray вход.

[cAper,cDper] = dwt(noisdopp,'db2','mode','per');
[max(abs(cA-cAper)) max(abs(cD-cDper))]
ans =

     0     0

Восстановите режим расширения к исходной настройке.

dwtmode(origMode,'nodisp')

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

свернуть все

Входные данные, заданные как вектор.

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

Анализ вейвлета, используемого для вычисления одноуровневого DWT, заданный как вектор символов или строковый скаляр. Вейвлет должен быть распознан wavemngr. Анализирующий вейвлет получен из одного из следующих семейства вейвлет: Daubechies, Coiflets, Symlets, Fejér-Korovkin, Discrete Meyer, Biorthogonal и Reverse Biorthogonal. Посмотрите wfilters для вейвлетов, доступных в каждом семействе.

Пример: 'db4'

Вейвлеты Вейвлет-разложения, заданные как пара векторов с четной длиной, действительными значениями. LoD - lowpass разложения, и HiD - фильтр высокочастотного разложения. Длины LoD и HiD должно быть равным. Посмотрите wfilters для получения дополнительной информации.

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

Режим расширения, используемый при выполнении DWT, задается как один из следующих:

mode

Режим расширения DWT

'zpd'

Нулевой внутренний номер

'sp0'

Сглаживайте расширение порядка 0

'spd' (или 'sp1')

Сглаживайте расширение порядка 1

'sym' или 'symh'

Симметричное расширение (половина точки): граничное значение симметричной репликации

'symw'

Симметричное расширение (вся точка): граничное значение симметричной репликации

'asym' или 'asymh'

Антисимметричное расширение (половина точки): краевое значение антисимметричной репликации

'asymw'

Антисимметричное расширение (вся точка): краевое значение антисимметричной репликации

'ppd'

Периодическое расширение (1)

'per'

Периодическое расширение (2)

Если длина сигнала нечетная, wextend добавляет вправо дополнительную выборку, которая равна последнему значению, и выполняет расширение с помощью 'ppd' режим. В противном случае 'per' сокращается до 'ppd'. Это правило также применяется к изображениям.

Глобальная переменная, управляемая dwtmode задает режим расширения по умолчанию. Посмотрите dwtmode для описаний режима расширения.

Пример: [cA,cD] = dwt(x,'db4','mode','symw') возвращает одноуровневый DWT x использование порядка 4 Daubechies экстремального фазового вейвлета и симметричного расширения всей точки.

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

свернуть все

Приближения коэффициенты, полученные из разложения вейвлета, возвращаются как вектор. Свертка входного сигнала x с масштабирующим фильтром LoD, с последующего диадического десятикратного уменьшения, приводит к получению коэффициентов приближения. Позвольте sx = size(x) и lf = длина фильтров разложения.

  • Если для режима расширения DWT задана периодизация, cA является вектором длины ceil(sx/2).

  • Для других режимов расширения cA является вектором длины floor((sx+lf-1)/2).

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

Коэффициенты детализации, полученные из вейвлета разложения, возвращаются как вектор. Свертка входного сигнала x с вейвлет HiD, с последующим диадическим десятикратным уменьшением, приводит к коэффициентам детализации. Позвольте sx = size(x) и lf = длина фильтров разложения.

  • Если для режима расширения DWT задана периодизация, cD является вектором длины ceil(sx/2).

  • Для других режимов расширения cD является вектором длины floor((sx+lf-1)/2).

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

Алгоритмы

Начиная с s сигналов длины N, вычисляются два набора коэффициентов: коэффициенты аппроксимации cA 1 и коэффициенты детализации cD 1. Свертка s с помощью масштабирующего фильтра LoD, с последующего диадического десятикратного уменьшения, приводит к получению коэффициентов приближения. Точно так же свертка s с вейвлет HiD, с последующим диадическим десятикратным уменьшением, приводит к коэффициентам детализации.

где

  • - Свертка с фильтром X

  • 2 - Downsample (сохранить четные индексированные элементы)

Длина каждого фильтра равна 2 n. Если N = длина (<reservedrangesplaceholder6>), сигналы <reservedrangesplaceholder5> и <reservedrangesplaceholder4> имеют длину N +, 2 <reservedrangesplaceholder2> −1 и коэффициенты <reservedrangesplaceholder1> 1 и <reservedrangesplaceholder0> 1 имеют пол длины(N12)+n.

Чтобы справиться с эффектами конца сигнала, возникающими из основанного на свертке алгоритма, глобальной переменной, управляемой dwtmode определяет тип используемого режима расширения сигнала. Возможные опции включают заполнение нулями и симметричное расширение, которое является режимом по умолчанию.

Примечание

Для того же входа, dwt функция и блок DWT в DSP System Toolbox™ не дают одинаковых результатов. Блок DWT предназначен для реализации в реальном времени, в то время как программное обеспечение Wavelet Toolbox™ предназначено для анализа, поэтому продукты обрабатывают граничные условия и состояния фильтра по-разному.

Чтобы сделать dwt выход функции соответствует выходу DWT, установите условие контура функции в нули заполнения путем ввода dwtmode('zpd') в MATLAB® командная строка. Чтобы соответствовать задержке блока DWT, которая реализована с помощью конечной импульсной характеристики фильтров, добавьте нули к входу dwt функция. Количество добавленных нулей должно быть меньше половины длины фильтра.

Ссылки

[1] Daubechies, I. Ten Lectures on Wavelets. Серия региональных конференций CBMS-NSF по прикладной математике. Филадельфия, Пенсильвания: Общество промышленной и прикладной математики, 1992.

[2] Mallat, S. G. «A Theory for Multirresolution Signal Decomposition: The Wavelet Representation». Транзакции IEEE по шаблонному анализу и машинному анализу. Том 11, выпуск 7, июль 1989 года, стр. 674-693.

[3] Meyer, Y. Wavelets and Operators. Перевод Д. Х. Сэлинджера. Кембридж, Великобритания: Cambridge University Press, 1995.

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

..

См. также

| | | |

Представлено до R2006a