dsp.DyadicAnalysisFilterBank

Группа фильтров диадического анализа

Описание

The dsp.DyadicAnalysisFilterBank Система object™ разлагает широкополосный сигнал на набор поддиапазонов с меньшими полосами пропускания и более медленными скоростями дискретизации. Системный объект использует серию фильтров highpass и lowpass конечной импульсной характеристики, чтобы обеспечить приблизительную октавную полосу частотное разложение входа. Каждый выход фильтра уменьшается в два раза. С помощью соответствующих фильтров анализа и древовидной структуры, группа фильтров диадического анализа является дискретным вейвлет (DWT) или дискретным вейвлет пакета (DWPT).

Для получения приблизительных октавных частотных разложений входа:

  1. Создайте dsp.DyadicAnalysisFilterBank Объекту и установите его свойства.

  2. Вызывайте объект с аргументами, как будто это функция.

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

пример

dydan = dsp.DyadicAnalysisFilterBank создает объект банка фильтров диадического анализа, dydan, который вычисляет двухуровневый дискретный вейвлет преобразование (DWT) вектора-столбца входа. Для входов матрицы 2-D объект преобразует столбцы с помощью вейвлета экстремальной фазы третьего порядка Daubechies. Длина входа по первой размерности должна быть кратной 4.

пример

dydan = dsp.DyadicAnalysisFilterBank(Name,Value) возвращает объект банка фильтров диадического анализа с каждым набором свойств к заданному значению.

Свойства

расширить все

Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release функция разблокирует их.

Если свойство настраивается, можно изменить его значение в любой момент.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

Укажите тип фильтра, используемого для определения высоко- и lowpass-КИХ-фильтров в группе диадических фильтров анализа следующим Custom , Haar, Daubechies, Symlets, Coiflets, Biorthogonal, Reverse Biorthogonal, или Discrete Meyer. Все значения свойств, кроме Custom требуется программное обеспечение Wavelet Toolbox™. Если значение этого свойства Customкоэффициенты фильтра заданы значениями CustomLowpassFilter и CustomHighpassFilter свойства. В противном случае объект банка фильтров диадического анализа использует функцию Wavelet Toolbox wfilters для создания фильтров. В следующей таблице перечислены поддерживаемые вейвлеты и синтаксис примера для создания фильтров:

ФильтрНастройка примераСинтаксис для фильтров анализа
ХаарН/Д[Lo_D,Hi_D]=wfilters('haar');
Daubechies экстремальная фазаWaveletOrder=3;[Lo_D,Hi_D]=wfilters('db3');
Симлеты (Daubechies, наименее асимметричные)WaveletOrder=4;[Lo_D,Hi_D]=wfilters('sym4');
Coiflets WaveletOrder=1;[Lo_D,Hi_D]=wfilters('coif1');
БиоортогональныйFilterOrder='[3/1]';[Lo_D,Hi_D,Lo_R,Hi_R]=... wfilters('bior3.1');
Обратный биортогональныйFilterOrder='[3/1]';[Lo_D,Hi_D,Lo_R,Hi_R]=... wfilters('rbior3.1');
Дискретный МайерН/Д[Lo_D,Hi_D]=wfilters('dmey');

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

Зависимости

Это свойство применяется, когда вы устанавливаете Filter свойство к Custom.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Задайте вектор коэффициентов highpass конечной импульсной характеристики filter, в степенях z-1. Используйте полупериодический фильтр, который пропускает полосу, остановленный фильтром, заданным в CustomLowpassFilter свойство. По умолчанию задается фильтр Daubechies 3-го порядка, вейвлет экстремальной фазы (highpass).

Зависимости

Это свойство применяется, когда вы устанавливаете Filter свойство к Custom.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Задайте порядок вейвлета, выбранного в Filter свойство.

Зависимости

Это свойство применяется, когда вы устанавливаете Filter свойство ортогонального вейвлета: Daubechies (Daubechies экстремальная фаза), Symlets (Daubechies наименее-асимметричный), или Coiflets.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | fi

Укажите порядок порядков фильтра анализа и синтеза для биортогональных банков фильтров следующим 1 / 1, 1 / 3, 1 / 5, 2 / 2, 2 / 4, 2 / 6, 2 / 8, 3 / 1, 3 / 3, 3 / 5, 3 / 7, 3 / 9, 4 / 4, 5 / 5, или 6 / 8. В отличие от ортогональных вейвлет, биортогональные вейвлеты требуют различных фильтров для анализа (разложения) и синтеза (реконструкции) входа. Первый номер указывает порядок фильтра синтеза (реконструкции). Второе число указывает порядок фильтра анализа (разложения).

Зависимости

Это свойство применяется, когда вы устанавливаете Filter свойство к Biorthogonal или Reverse Biorthogonal.

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

Задайте количество уровней анализа банка фильтров, положительное целое число, больше или равное 1. Асимметричная структура N уровнем создает N + 1 выход поддиапазонов. Линейно N симметричная структура создает 2N выходные поддиапазоны. Размер входа по первой размерности должен быть кратен 2N, где N количество уровней.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Задайте структуру группы фильтров следующим Asymmetric или Symmetric. Асимметричная структура разлагает только выход lowpass с каждого уровня. Симметричная структура разлагает выходы фильтра верхних и нижних частот с каждого уровня. Если фильтры анализа являются масштабирующими (lowpass) и вейвлет (highpass), асимметричная структура является дискретным вейвлет, в то время как симметричная структура является дискретным вейвлет пакета.

Когда это свойство Symmetric, выход имеет 2N поддиапазоны каждый размером M/2N. В этом случае M - длина входа по первой размерности, а N - значение NumLevels свойство. Когда это свойство Asymmetric, выход имеет N + 1 поддиапазонов. Следующее уравнение приводит длину выхода в k-м поддиапазоне в асимметричном случае:

Mk={M2k1kNM2Nk=N+1

Использование

Синтаксис

Описание

пример

y = dydan(x) вычисляет разложение поддиапазона входа x и выводит диадическое разложение поддиапазона в y как один конкатенированный вектор-столбец или матрица коэффициентов.

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

расширить все

Вход данных, заданный как вектор-столбец или матрица. Каждый столбец x рассматривается как независимый вход и количество строк x должно быть кратным 2N, где N - количество уровней, заданное NumLevels свойство.

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

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

расширить все

Выход разложения поддиапазона, возвращенный как вектор-столбец или матрица. Элементы y упорядочены с поддиапазоном самой высокой частоты, за которым сначала следуют поддиапазоны с уменьшающейся частотой.

Когда TreeStructure установлено в Symmetric, выход имеет 2N поддиапазоны каждый размером M/2N. В этом случае M - длина входа по первой размерности, а N - значение NumLevels свойство. Когда TreeStructure установлено в Asymmetric, выход имеет N + 1 поддиапазонов. Следующее уравнение приводит длину выхода в k-м поддиапазоне в асимметричном случае:

Mk={M2k1kNM2Nk=N+1

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

Функции объекта

Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj, используйте следующий синтаксис:

release(obj)

расширить все

stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта

Примеры

свернуть все

Примечание.Этот пример выполняется только в R2016b или более поздней версии. Если вы используете более ранний релиз, замените каждый вызов функции на эквивалентный step синтаксис. Например, myObject (x) становится шагом (myObject, x).

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

t = 0:.0001:.0511;
x= square(2*pi*30*t);
xn = x' + 0.08*randn(length(x),1);
dydanl = dsp.DyadicAnalysisFilterBank;

Коэффициенты фильтра соответствуют haar вейвлет.

dydanl.CustomLowpassFilter = [1/sqrt(2) 1/sqrt(2)];
dydanl.CustomHighpassFilter = [-1/sqrt(2) 1/sqrt(2)];
dydsyn = dsp.DyadicSynthesisFilterBank;
dydsyn.CustomLowpassFilter = [1/sqrt(2) 1/sqrt(2)];
dydsyn.CustomHighpassFilter = [1/sqrt(2) -1/sqrt(2)];
C = dydanl(xn);

Выходы поддиапазона.

C1 = C(1:256); C2 = C(257:384); C3 = C(385:512);

Установите более высокие коэффициенты частоты в нуль, чтобы удалить шум.

x_den = dydsyn([zeros(length(C1),1);...
    zeros(length(C2),1);C3]);

Постройте график исходных и деноизированных сигналов.

subplot(2,1,1), plot(xn); title('Original noisy Signal');
subplot(2,1,2), plot(x_den); title('Denoised Signal');

Figure contains 2 axes. Axes 1 with title Original noisy Signal contains an object of type line. Axes 2 with title Denoised Signal contains an object of type line.

Примечание.Этот пример выполняется только в R2016b или более поздней версии. Если вы используете более ранний релиз, замените каждый вызов функции на эквивалентный step синтаксис. Например, myObject (x) становится шагом (myObject, x).

Частота дискретизации 1 кГц входная длина 1024

t = 0:.001:1.023; 
x = square(2*pi*30*t);
xn = x' + 0.08*randn(length(x),1);

Асимметричная структура по умолчанию с вейвлет экстремальной фазы порядка 3

dydan = dsp.DyadicAnalysisFilterBank;
Y = dydan(xn);

Уровень 2 приводит к 3 поддиапазонам (два детальных приближения) Частота Nyquist составляет 500 Гц

D1 = Y(1:512); % subband approx. [250, 500] Hz 
D2 = Y(513:768); % subband approx. [125, 250] Hz
Approx = Y(769:1024); % subband approx. [0,125] Hz

Примечание.Этот пример выполняется только в R2016b или более поздней версии. Если вы используете более ранний релиз, замените каждый вызов функции на эквивалентный step синтаксис. Например, myObject (x) становится шагом (myObject, x).

Частота дискретизации 1 кГц входная длина 1024.

t = 0:.001:1.023; 
x = square(2*pi*30*t);
xn = x' + 0.08*randn(length(x),1);
dydan = dsp.DyadicAnalysisFilterBank('TreeStructure',...
'Symmetric');
Y = dydan(xn);
D1 = Y(1:256); % subband approx. [375,500] Hz
D2 = Y(257:512); % subband approx. [250,375] Hz
D3 = Y(513:768); % subband approx. [125,250] Hz
Approx = Y(769:1024); % subband approx. [0, 125] Hz

Алгоритмы

Этот объект реализует алгоритм, входы и выходы, описанные на Dyadic Analysis Filter Bank блочных страниц с описанием. Свойства объекта соответствуют параметрам блоков, кроме:

Объект банка фильтров диадического анализа всегда объединяет поддиапазоны в один вектор-столбец для вектора-столбца входа или в столбцы матрицы для матричного входа. Это поведение соответствует поведению блока, когда вы устанавливаете параметр Output равным Single port.

Введенный в R2012a