exponenta event banner

dsp. DyadicAnalysisFilterBank

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

Описание

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

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

  1. Создать dsp.DyadicAnalysisFilterBank и задайте его свойства.

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

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

Создание

Описание

пример

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

пример

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

Свойства

развернуть все

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

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

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Укажите тип фильтра, используемого для определения фильтров FIR верхних и нижних частот в наборе фильтров диадического анализа как 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');
Эстремальная фаза DaubechiesWaveletOrder=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');

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

Зависимости

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

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

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

Зависимости

Это свойство применяется при установке 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. Асимметричная структура разлагает только выходной сигнал фильтра нижних частот каждого уровня. Симметричная структура разлагает выходы фильтра верхних и нижних частот с каждого уровня. Если фильтры анализа являются фильтрами масштабирования (нижних частот) и вейвлет (верхних частот), асимметричная структура является дискретным вейвлет-преобразованием, в то время как симметричная структура является дискретным вейвлет-пакетным преобразованием.

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

Mk={M2k1≤k≤NM2Nk=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={M2k1≤k≤NM2Nk=N+1

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

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

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

release(obj)

развернуть все

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

Примеры

свернуть все

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

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

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 поддиапазона (две детальные аппроксимации) частота Найквиста составляет 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. Свойства объекта соответствуют параметрам блока, за исключением:

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

Представлен в R2012a