dwt

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

Описание

пример

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

Примечание

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

пример

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

Получите одноуровневый 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 фильтры highpass. Первые столбцы 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')

Пошлите к Поддержке графического процессора Релизом (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' установите на неподдерживаемый режим также значения по умолчанию к 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 | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

Пример: 'db4'

Масштабирование (lowpass) фильтрует в виде ровной длины вектор с действительным знаком. LoD должна быть та же длина как HiD. Смотрите wfilters для деталей.

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

Вейвлет (highpass) фильтрует в виде ровной длины вектор с действительным знаком. HiD должна быть та же длина как LoD. Смотрите wfilters для деталей.

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

Дополнительный режим, используемый при выполнении DWT в виде одного из следующего:

mode

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

'zpd'

Дополнение нулями

'sp0'

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

'spd' (or 'sp1')

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

'sym' или 'symh'

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

'symw'

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

'asym' или 'asymh'

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

'asymw'

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

'ppd'

Расширение Periodized (1)

'per'

Расширение Periodized (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 установлен в periodization, cA вектор из длины ceil(sx/2).

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

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

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

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

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

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

Алгоритмы

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

где

  • — Примените операцию свертки с фильтром X

  • 2 — Downsample (сохраняют даже индексированные элементы),

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

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

Примечание

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

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

Ссылки

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

[2] Mallat, S. G. “Теория для Разложения Сигнала Мультиразрешения: Представление Вейвлета”. Транзакции IEEE согласно Анализу Шаблона и Искусственному интеллекту. Издание 11, Выпуск 7, июль 1989, стр 674–693.

[3] Мейер, Y. Вейвлеты и операторы. Переведенный Д. Х. Сэлинджером. Кембридж, Великобритания: Издательство Кембриджского университета, 1995.

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

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

| | | |

Представлено до R2006a
Для просмотра документации необходимо авторизоваться на сайте