exponenta event banner

dwt

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

Описание

пример

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

Примечание

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

пример

[cA,cD] = dwt(x,LoD,HiD) возвращает одноуровневый DWT с использованием указанных низкочастотных и высокочастотных фильтров вейвлет-декомпозиции 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 шумного доплеровского сигнала с помощью вейвлет-фильтров (верхних частот) и фильтров масштабирования (нижних частот).

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

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

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

Для bior3.5 вейвлет, lo и hi представляют собой матрицы 12 на 2. lo фильтры нижних частот, и 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.

Сведения о поддерживаемых графических процессорах см. в документе Поддержка графического процессора по выпуску (Панель инструментов параллельных вычислений).

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

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

Использовать dwtmode для изменения режима расширения на заполнение нулем. Получение одноуровневого дискретного вейвлет-преобразования сигнала на GPU с помощью 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' установить в неподдерживаемый режим также по умолчанию sym режим расширения.

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

     0     0

Измените текущий режим расширения на периодический. Получение одноуровневого дискретного вейвлет-преобразования сигнала на GPU с помощью 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 является фильтром разложения нижних частот, и 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 вычисляются два набора коэффициентов: коэффициенты аппроксимации cA1 и коэффициенты детализации cD1. Свертывание s с помощью фильтра масштабирования LoD, с последующим диадическим прореживанием, дает коэффициенты аппроксимации. Аналогично, свертывание s с вейвлет-фильтром HiDс последующим диадическим прореживанием дает коэффициенты детализации.

где

  • - Свернуть с фильтром X

  • ↓2 - Понижение (сохранить четные элементы)

Длина каждого фильтра равна 2n. Если N = длина (длины), сигналы F и G имеют длину N + 2n − 1, а коэффициенты cA1 и cD1 имеют длину floor (N 12) + n.

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

Примечание

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

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

Ссылки

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

[2] Маллат, С. Г. «Теория разложения сигнала с множественным разрешением: вейвлет-представление». Транзакции IEEE по анализу шаблонов и машинному интеллекту. Том 11, выпуск 7, июль 1989 года, стр. 674-693.

[3] Мейер, Я. Вейвлетс и Операторы. Перевёл Д. Х. Сэлинджер. Кембридж, Великобритания: Cambridge University Press, 1995.

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

..

См. также

| | | |

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