exponenta event banner

dsp. BiquadFilter

БИХ-фильтр с использованием биквадратических структур

Описание

dsp.BiquadFilter объект реализует каскад биквадратических сечений, где коэффициенты для каждого сечения предоставляются отдельной строкой N-by-6 матрицы сечений второго порядка (SOS). Каждая строка матрицы SOS содержит числительные и знаменательные коэффициенты соответствующего участка фильтра. Результирующий фильтр может быть применен к входу вектора или матрицы, где каждый столбец представляет канал данных, который обрабатывается независимо.

Для реализации структуры фильтра БИХ с использованием биквадратичного или SOS:

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

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

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

Создание

Описание

biquad = dsp.BiquadFilter возвращает биквадратический фильтр IIR (SOS) System object™, biquad, который независимо фильтрует каждый канал (столбец) ввода во времени с помощью секции SOS [1 0.3 0.4 1 0.1 0.2] с транспонированной структурой прямой формы II.

пример

biquad = dsp.BiquadFilter(sosmatrix,scalevalues) возвращает объект биквадратического фильтра с помощью SOSMatrix свойство имеет значение sosmatrix и ScaleValues свойство имеет значение scalevalues.

пример

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

Свойства

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

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

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

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

Укажите структуру фильтра как 'Direct form I', 'Direct form I transposed', 'Direct form II', 'Direct form II transposed'.

Укажите источник матрицы SOS как 'Property' или 'Input port'.

Укажите матрицу секции второго порядка (SOS) в качестве матрицы N-by-6, где N - количество секций в фильтре. Каждая строка матрицы SOS содержит числительные и знаменательные коэффициенты соответствующего участка фильтра. Системная функция H (z) биквадратного фильтра:

H (z) =∑k=02bkz−k1−∑l=12alz−l

Коэффициенты упорядочены в строках матрицы SOS как (b0, b1, b2,1, -a1, -a2). Можно использовать коэффициенты вещественных или комплексных значений. Это свойство применяется только при установке SOSMatrixSource свойство для Property. Коэффициент начального знаменателя биквадного фильтра, a0, равен 1 для каждой секции фильтра, независимо от заданного значения.

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

Укажите значения масштаба, применяемые до и после каждого раздела биквадратного фильтра. ScaleValues должен быть скаляром или вектором длины N+1, где N - количество разделов. Если для этого свойства задано значение скаляра, скалярное значение используется в качестве значения коэффициента усиления только перед первой секцией фильтра. Остальные значения коэффициента усиления устанавливаются в значение 1. Если для этого свойства задан вектор N+1значения, каждое значение используется для отдельного раздела фильтра.

Зависимости

Это свойство применяется только при установке SOSMatrixSource свойство для Property.

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

Укажите начальные условия состояний фильтра, когда Structure свойство является одним из | Direct form II | Direct form II transposed |. Количество состояний или элементов задержки (нулей и полюсов) в биквадратном фильтре прямой формы II равно удвоенному количеству секций фильтра. Начальные условия можно задать как скаляр, вектор или матрицу.

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

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

Зависимости

Это свойство применяется только при установке Structure свойство для одного из Direct form II или Direct form II transposed.

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

Укажите начальные условия состояний фильтра на стороне структуры фильтра с нулями. Количество состояний или элементов задержки в числителе биквадратного фильтра прямой формы I равно удвоенному количеству секций фильтра. Начальные условия можно задать как скаляр, вектор или матрицу. При указании скаляра биквадратный фильтр инициализирует все элементы задержки на стороне нулей в фильтре до этого значения. При задании вектора длины, равной количеству элементов задержки на стороне нулей в фильтре, каждый элемент вектора задает уникальное начальное условие для соответствующего элемента задержки на стороне нулей.

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

Зависимости

Это свойство применяется только при установке Structure свойство для одного из Direct form I или Direct form I transposed.

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

Укажите начальные условия состояний фильтра на стороне структуры фильтра с полюсами. Число состояний знаменателя или элементов задержки в I-образном (неканоническом) биквадратном фильтре равно удвоенному количеству секций фильтра. Начальные условия можно задать как скаляр, вектор или матрицу. При указании скаляра биквадратный фильтр инициализирует все элементы задержки на стороне полюсов фильтра до этого значения. При задании вектора длины, равной количеству элементов задержки на стороне полюсов в фильтре, каждый элемент вектора задает уникальное начальное условие для соответствующего элемента задержки на стороне полюсов.

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

Зависимости

Это свойство применяется только при установке Structure свойство для одного из Direct form I или Direct form I transposed.

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

Если для этого логического свойства установлено значение true, биквадратный фильтр удаляет все вычисления коэффициента усиления по шкале единиц. Это уменьшает количество вычислений и повышает точность фиксированных точек.

Зависимости

Это свойство применяется только при установке SOSMatrixSource свойство для Property.

Выберите способ задания значений масштаба. По умолчанию это свойство имеет значение trueи значения масштаба задаются через входной порт. Когда это свойство false, все значения шкалы равны 1.

Зависимости

Это свойство применяется только в том случае, если SOSMatrixSource свойство - Input port.

Свойства с фиксированной точкой

Укажите метод округления.

Укажите действие переполнения как одно из Wrap или Saturate.

Укажите мультипликативный тип данных с фиксированной точкой как один из Same as output или Custom.

Зависимости

Это свойство применяется только при установке Structure свойство для Direct form I transposed.

Укажите тип умноженной фиксированной точки как масштабированный numerictype (Конструктор фиксированных точек) объект с Signedness из Auto.

Зависимости

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

Укажите тип данных с фиксированной точкой ввода сечения: Same as input или Custom.

Укажите тип фиксированной точки ввода сечения как масштабированный numerictype (Конструктор фиксированных точек) объект с Signedness из Auto.

Зависимости

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

Укажите тип данных с фиксированной точкой вывода сечения: Same as section input или Custom.

Укажите тип выходной фиксированной точки сечения как подписанный, масштабированный numerictype (Конструктор фиксированных точек) объект с Signedness из Auto.

Зависимости

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

Укажите числительные коэффициенты типа данных с фиксированной точкой как Same word length as input или Custom. Установка этого свойства также задает DenominatorCoefficientsDataType и ScaleValuesDataType к тому же значению.

Зависимости

Это свойство применяется только при установке SOSMatrixSource свойство для Property.

Укажите числительные коэффициенты фиксированного типа точки как numerictype (Конструктор фиксированных точек) объект с Signedness из Auto. Длина слова CustomNumeratorCoefficientsDataType, CustomDenominatorCoefficientsDataType, и CustomScaleValuesDataType свойства должны совпадать.

Зависимости

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

Укажите коэффициенты знаменателя типа данных с фиксированной точкой как Same word length as input или Custom. Установка этого свойства также задает NumeratorCoefficientsDataType и ScaleValuesDataType к тому же значению.

Зависимости

Это свойство применяется только при установке SOSMatrixSource свойство для Property.

Укажите коэффициенты знаменателя фиксированного типа точки как numerictype (Конструктор фиксированных точек) объект с Signedness из Auto. CustomNumeratorCoefficientsDataType, CustomDenominatorCoefficientsDataType, и CustomScaleValuesDataType свойства должны иметь одинаковую длину слова.

Зависимости

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

Укажите масштабные значения типа данных с фиксированной точкой как Same word length as input или Custom. Установка этого свойства также задает NumeratorCoefficientsDataType и DenominatorCoefficientsDataType к тому же значению.

Зависимости

Это свойство применяется только при установке SOSMatrixSource свойство для Property.

Укажите тип фиксированной точки для значений масштаба numerictype (Конструктор фиксированных точек) объект с Signedness из Auto. CustomNumeratorCoefficientsDataType, CustomDenominatorCoefficientsDataType, и CustomScaleValuesDataType свойства должны иметь одинаковую длину слова.

Зависимости

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

Укажите режим для определения типа данных числителя продукта с фиксированной точкой:

  • Same as input (по умолчанию) - длина слова и дроби числителя совпадает с длиной входных данных.

  • Custom - Включает CustomNumeratorProductDataType , которое можно использовать для указания типа данных пользовательского числителя продукта. Укажите тип данных как numerictype объект.

  • Full precision - Используйте правила полной точности для указания типа данных. Эти правила обеспечивают наиболее точные числа фиксированных точек. Правила предотвращают квантование внутри объекта. Биты добавляются по мере необходимости, чтобы не происходило округления или переполнения. Дополнительные сведения см. в разделе Полная точность для системных объектов с фиксированной точкой.

Установка этого свойства также задает DenominatorProductDataType к тому же значению.

Укажите тип фиксированной точки продукта как масштабированный numerictype (Конструктор фиксированных точек) объект с Signedness из Auto. CustomNumeratorProductDataType и CustomDenominatorProductDataType свойства должны иметь одинаковую длину слова.

Зависимости

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

Укажите режим для определения типа данных продукта с фиксированной точкой знаменателя как:

  • Same as input (по умолчанию) - длина слова произведения знаменателя и дроби совпадает с длиной входного значения.

  • Custom - Включает CustomDenominatorProductDataType , которое можно использовать для указания типа данных продукта пользовательского знаменателя. Укажите тип данных как numerictype объект.

  • Full precision - Используйте правила полной точности для указания типа данных. Эти правила обеспечивают наиболее точные числа фиксированных точек. Правила предотвращают квантование внутри объекта. Биты добавляются по мере необходимости, чтобы не происходило округления или переполнения. Дополнительные сведения см. в разделе Полная точность для системных объектов с фиксированной точкой.

Установка этого свойства также задает NumeratorProductDataType к тому же значению.

Укажите тип фиксированной точки продукта как масштабированный numerictype (Конструктор фиксированных точек) объект с Signedness из Auto. CustomNumeratorProductDataType и CustomDenominatorProductDataType свойства должны иметь одинаковую длину слова.

Зависимости

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

Укажите тип данных с фиксированной точкой сумматора числителя как Same as input, Same as product, или Custom. Установка этого свойства также задает DenominatorAccumulatorDataType к тому же значению.

Укажите тип фиксированной точки сумматора числителя как масштабированный numerictype (Конструктор фиксированных точек) объект с Signedness из Auto. CustomNumeratorAccumulatorDataType и CustomDenominatorAccumulatorDataType свойства должны иметь одинаковую длину слова.

Зависимости

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

Укажите тип данных с фиксированной точкой сумматора знаменателя как Same as input, Same as product, или Custom. Установка этого свойства также задает NumeratorAccumulatorDataType к тому же значению.

Укажите тип фиксированной точки сумматора знаменателя как масштабированный numerictype (Конструктор фиксированных точек) объект с Signedness из Auto. CustomNumeratorAccumulatorDataType и CustomDenominatorAccumulatorDataType свойства должны иметь одинаковую длину слова.

Зависимости

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

Укажите тип данных с фиксированной точкой состояния как Same as input, Same as accumulator, или Custom.

Зависимости

Это свойство применяется при установке для свойства Structure значения Direct form II или Direct form II transposed.

Укажите тип фиксированной точки состояния как масштабированный numerictype (Конструктор фиксированных точек) объект с Signedness из Auto.

Зависимости

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

Укажите числительное состояние типа данных с фиксированной точкой как Same as input, Same as accumulator, или Custom. Установка этого свойства также задает DenominatorStateDataType к тому же значению.

Зависимости

Это свойство применяется только при установке для свойства Structure значения Direct form I transposed.

Укажите тип фиксированной точки числительного состояния как масштабированный numerictype (Конструктор фиксированных точек) объект с Signedness из Auto. CustomNumeratorProductDataType и CustomDenominatorProductDataType свойства должны иметь одинаковую длину слова.

Зависимости

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

Укажите тип данных фиксированной точки состояния знаменателя как Same as input, Same as accumulator, или Custom. Установка этого свойства также задает NumeratorStateDataType к тому же значению.

Зависимости

Это свойство применяется только при установке для свойства Structure значения Direct form I transposed.

Укажите тип фиксированной точки состояния знаменателя как масштабированный numerictype (Конструктор фиксированных точек) объект с Signedness из Auto. CustomNumeratorStateDataType и CustomDenominatorStateDataType свойства должны иметь одинаковую длину слова.

Зависимости

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

Укажите тип выходных данных с фиксированной точкой как Same as input, Same as accumulator, или Custom.

Укажите тип выходной фиксированной точки как масштабированный numerictype (Конструктор фиксированных точек) объект с Signedness из Auto.

Зависимости

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

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

Описание

пример

y = biquad(x) фильтрация входного сигнала x и выводит отфильтрованные значения, y. Объект биквадратного фильтра фильтрует каждый канал входного сигнала по последовательным вызовам алгоритма.

y = biquad(x,num,den) фильтрует входные данные с помощью num в качестве числительных коэффициентов и den в качестве коэффициентов знаменателя биквадратного фильтра. Эта конфигурация применяется, когда SOSMatrixSource свойство - Input port и ScaleValuesInputPort свойство - false.

y = biquad(x,num,den,g) задает значения масштаба, g, биквадного фильтра. Эта конфигурация применяется, когда SOSMatrixSource свойство - Input Port и ScaleValuesInputPort свойство - true.

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

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

Ввод данных, заданный как вектор или матрица. Этот объект также принимает входные данные переменного размера. Как только объект заблокирован, можно изменить размер каждого входного канала, но нельзя изменить количество каналов.

Тип данных всех входов должен быть одинаковым. Если вход имеет фиксированную точку, он должен быть подписан фиксированной точкой с наклоном мощности два и нулевым смещением.

Сложность x, num, и den должно быть то же самое.

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

Числительные коэффициенты, определенные как 3-by-N числовая матрица, где N - количество секций биквадратного фильтра. Сложность x, num, и den должно быть то же самое.

Тип данных всех входов должен быть одинаковым. Если num является фиксированной точкой, она должна быть подписана фиксированной точкой с наклоном мощности два и нулевым смещением.

Зависимости

Этот ввод применяется только при установке SOSMatrixSource свойство - Input port.

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

Коэффициенты знаменателя, определенные как 2-by-N числовая матрица, где N - количество секций биквадратного фильтра. Объект предполагает, что коэффициент первого знаменателя каждого сечения равен 1.

Тип данных всех входов должен быть одинаковым. Если den является фиксированной точкой, она должна быть подписана фиксированной точкой с наклоном мощности два и нулевым смещением.

Сложность x, num, и den должно быть то же самое.

Зависимости

Этот ввод применяется только при установке SOSMatrixSource свойство - Input port.

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

Масштабирование значений биквадратного фильтра, заданного как 1-by- (N + 1) числовой вектор, гдеN - количество секций биквадратного фильтра.

Тип данных всех входов должен быть одинаковым. Если g является фиксированной точкой, она должна быть подписана фиксированной точкой с наклоном мощности два и нулевым смещением.

Зависимости

Этот ввод применяется, когда SOSMatrixSource свойство - Input Port и ScaleValuesInputPort свойство - true.

Типы данных: single | double | int8 | int16 | int32 | int64 | fi

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

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

Отфильтрованные выходные данные, возвращаемые в виде вектора или матрицы. Размер, тип данных и сложность выходного сигнала совпадают с размером входного сигнала.

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

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

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

release(obj)

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

freqzЧастотная характеристика объекта системы дискретно-временного фильтра
fvtoolВизуализация частотной характеристики фильтров DSP
impzИмпульсная характеристика объекта системы дискретно-временного фильтра
infoСведения об объекте filter System
coeffsВозвращает коэффициенты объекта System фильтра в структуре
costОценка затрат на внедрение фильтра Объект системы
scaleМасштабировать разделы второго порядка
scaleoptsСоздание объекта опций для масштабирования сечений второго порядка
scalecheckПроверить масштабирование биквадратического фильтра
cumsecКумулятивная секция второго порядка биквадратического фильтра
generatehdlСоздание кода HDL для квантованного фильтра DSP (требуется кодер HDL конструкции фильтра)
tfПреобразовать дискретно-временной фильтр Системный объект в передаточную функцию
reorderПереупорядочить секции второго порядка биквадратического фильтра System object
stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

Примечание.При использовании R2016a или более ранней версии замените каждый вызов объекта синтаксисом эквивалентного шага. Например, obj(x) становится step(obj,x).

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

t = (0:1000)'/8e3;
xin = sin(2*pi*0.3e3*t)+sin(2*pi*3e3*t); % Input is 0.3 &
                                       % 3kHz sinusoids
src = dsp.SignalSource(xin, 100);
sink = dsp.SignalSink;

[z,p,k] = ellip(4,1,60,.4);    % Set up the filter
[s,g] = zp2sos(z,p,k);
biquad = dsp.BiquadFilter(s,g,'Structure','Direct form I');

sa = dsp.SpectrumAnalyzer('SampleRate',8e3,...
    'PlotAsTwoSidedSpectrum',false,...
    'OverlapPercent', 80,'PowerUnits','dBW',...
    'YLimits', [-160 -10]);

while ~isDone(src)
     input = src();
     filteredOutput = biquad(input);
     sink(filteredOutput);
     sa(filteredOutput)
end

filteredResult = sink.Buffer;
fvtool(biquad,'Fs',8000)

Проектирование и применение низкочастотного биквадратного фильтра Системный объект с помощью design функция.

lpSpec = fdesign.lowpass('Fp,Fst,Ap,Ast',500,550,0.5,60,10000);
lpfilter = design(lpSpec,'butter','systemobject',true)
fvtool(lpfilter);
lpfilter = 

  dsp.BiquadFilter with properties:

                   Structure: 'Direct form II'
             SOSMatrixSource: 'Property'
                   SOSMatrix: [42x6 double]
                 ScaleValues: [43x1 double]
           InitialConditions: 0
    OptimizeUnityScaleValues: true

  Use get to show all properties

Продемонстрируйте масштабирование Linf-norm биквадного фильтра с помощью scale функция.

Fs = 8000; Fcutoff = 2000;
[z,p,k] = butter(10,Fcutoff/(Fs/2)); [s,g] = zp2sos(z,p,k);
biquad = dsp.BiquadFilter('Structure', 'Direct form I', ...
    'SOSMatrix', s,'ScaleValues', g);
scale(biquad,'linf','scalevalueconstraint','none','maxscalevalue',2)

Создайте объект масштабирования опций, содержащий необходимые параметры масштабирования.

EllipI = design(fdesign.lowpass('N,Fp,Ap,Ast',10,0.5,0.5,20), 'ellip', 'FilterStructure', 'df1sos','SystemObject',true)
EllipI = 
  dsp.BiquadFilter with properties:

                       Structure: 'Direct form I'
                 SOSMatrixSource: 'Property'
                       SOSMatrix: [5x6 double]
                     ScaleValues: [6x1 double]
      NumeratorInitialConditions: 0
    DenominatorInitialConditions: 0
        OptimizeUnityScaleValues: true

  Show all properties

opts = scaleopts(EllipI)
opts =

              sosReorder: 'auto'
            MaxNumerator: 2
     NumeratorConstraint: 'none'
            OverflowMode: 'wrap'
    ScaleValueConstraint: 'unit'
           MaxScaleValue: 'Not used'

Алгоритмы

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

  • Источник коэффициента

  • Действие, когда значения a0 матрицы SOS не равны единице - объект биквадратного фильтра принимает коэффициент знаменателя нулевого порядка, равный 1 независимо от указанного значения. Объект биквадного фильтра не поддерживает Error или Warn в соответствующем блоке.

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

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

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