Фильтр с бесконечной импульсной характеристикой (БИХ)
The dsp.IIRFilter
Системный object™ фильтрует каждый канал входа с помощью заданного фильтра. Можно задать фильтр для 'Direct form I'
, 'Direct form I transposed'
, 'Direct form II'
, или 'Direct form II transposed'
структура.
Используйте свойства Numerator и Denominator, чтобы задать коэффициенты числителя фильтра и коэффициенты знаменателя. В дополнение к этим коэффициентам можно также задать ненулевые начальные состояния фильтра через свойство InitialConditions.
Для фильтрации сигнала с помощью БИХ:
Создайте dsp.IIRFilter
Объекту и установите его свойства.
Вызывайте объект с аргументами, как будто это функция.
Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».
создает фильтр с бесконечной импульсной характеристикой (БИХ) Системного объекта который независимо фильтрует каждый канал входа с течением времени с помощью заданной реализации БИХ фильтра.iir
= dsp.IIRFilter
создает объект фильтра БИХ с каждым заданным набором свойств до заданного значения. Заключайте каждое имя свойства в одинарные кавычки.iir
= dsp.IIRFilter(Name,Value
)
Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release
функция разблокирует их.
Если свойство настраивается, можно изменить его значение в любой момент.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.
Structure
- структура БИХ'Direct form II transposed'
(по умолчанию) | 'Direct form I'
| 'Direct form I transposed'
| 'Direct form II'
Структура БИХ, заданная как 'Direct form I'
, 'Direct form I transposed'
, 'Direct form II'
, или 'Direct form II transposed'
.
Numerator
- Коэффициенты числителя[1 1]
(по умолчанию) | вектор-строкаКоэффициенты числителя, заданные как вектор-строка.
Пример: [0.0296 0.1775 0.4438 0.5918 0.4438 0.1775 0.0296
]
Настраиваемый: Да
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Поддержка комплексного числа: Да
Denominator
- Коэффициенты знаменателя[1 0.1]
(по умолчанию) | вектор-строкаКоэффициенты знаменателя, заданные как вектор-строка.
Пример: [1.0000 -0.0000 0.7777 -0.0000 0.1142 -0.0000 0.0018
]
Настраиваемый: Да
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Поддержка комплексного числа: Да
InitialConditions
- Начальные условия0
(по умолчанию) | скалярный вектор | | матрицаНачальные условия состояния фильтра, заданные как одно из следующего:
скаляр -- Объект инициализирует все элементы задержки в фильтре до скалярного значения.
vector - Длина вектора равняется количеству элементов задержки в фильтре. Каждый векторный элемент задает уникальное начальное условие для соответствующего элемента задержки. Объект применяет один и тот же вектор к каждому каналу входного сигнала.
matrix - Количество строк в матрице должно равняться количеству элементов задержки в фильтре. Количество столбцов в матрице должно равняться количеству каналов во входе. Каждый элемент задает уникальное начальное условие для соответствующего элемента задержки в соответствующем канале.
Количество состояний фильтра равняется max (N, M) - 1, где N - количество полюсов, а M - количество нулей.
Настраиваемый: Да
Это свойство применяется только, когда вы задаете свойство Structure равным 'Direct form II'
или 'Direct form II transposed'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Поддержка комплексного числа: Да
NumeratorInitialConditions
- Начальные условия на стороне нулей0
(по умолчанию) | скалярный вектор | | матрицаНачальные условия состояний фильтра на стороне структуры фильтра с нулями, заданные как одно из следующих:
скаляр -- Объект инициализирует все элементы задержки на стороне нулей в фильтре до скалярного значения.
vector - Длина вектора равняется количеству элементов задержки на стороне нулей в фильтре. Каждый векторный элемент задает уникальное начальное условие для соответствующего элемента задержки на стороне нулей. Объект применяет один и тот же вектор начальных условий к каждому каналу входного сигнала.
matrix - Количество строк в матрице должно равняться количеству элементов задержки на стороне нулей в фильтре. Количество столбцов в матрице должно равняться количеству каналов в входном сигнале. Каждый элемент задает уникальное начальное условие для соответствующего элемента задержки на стороне нулей в соответствующем канале.
Количество состояний фильтра равняется max (N, M) - 1, где N - количество полюсов, а M - количество нулей, соответственно.
Настраиваемый: Да
Это свойство применяется только, когда вы задаете свойство Structure равным 'Direct form I'
или 'Direct form I transposed'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Поддержка комплексного числа: Да
DenominatorInitialConditions
- Начальные условия на стороне полюсов0
(по умолчанию) | скалярный вектор | | матрицаНачальные условия состояния фильтра на стороне структуры фильтра с полюсами, заданные как одно из следующих:
скаляр -- Объект инициализирует все элементы задержки на стороне полюсов в фильтре до скалярного значения.
vector -- Длина вектора равна количеству элементов задержки на стороне полюсов в фильтре. Каждый векторный элемент задает уникальное начальное условие для соответствующего элемента задержки на стороне полюсов. Объект применяет один и тот же вектор начальных условий к каждому каналу входного сигнала.
matrix - количество строк в матрице должно равняться количеству элементов задержки на стороне полюсов в фильтре. Количество столбцов в матрице должно равняться количеству каналов в входном сигнале. Каждый элемент задает уникальное начальное условие для соответствующего элемента задержки на стороне полюсов в соответствующем канале.
Количество состояний фильтра равняется max (N, M) - 1, где N - количество полюсов, а M - количество нулей, соответственно.
Настраиваемый: Да
Это свойство применяется только, когда вы задаете свойство Structure равным 'Direct form I'
или 'Direct form I transposed'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Поддержка комплексного числа: Да
RoundingMethod
- Метод округления'Floor'
(по умолчанию) | 'Ceiling'
| 'Convergent'
| 'Nearest'
| 'Round'
| 'Simplest'
| 'Zero'
Выберите режим округления для операций с фиксированной точкой.
OverflowAction
- Действие переполнения'Wrap'
(по умолчанию) | 'Saturate'
Действие переполнения для операций с фиксированной точкой, заданное как одно из следующего:
'Wrap'
- Объект переносит результат своих операций с фиксированной точкой.
'Saturate'
- Объект насыщает результат своих операций с фиксированной точкой.
Для получения дополнительной информации о действиях переполнения смотрите режим переполнения для операций с фиксированной точкой.
StateDataType
- Тип данных о состоянии'Same as input'
(по умолчанию) | 'Custom'
Тип данных о состоянии, заданный как один из следующих:
'Same as input'
- Тип данных о состоянии совпадает с типом входных данных.
'Custom'
- Тип выходных данных состояния является автоматическим числовым типом через свойство CustomStateDataType.
CustomStateDataType
- Длина слова и дроби состоянияnumerictype([],16,15)
(по умолчанию)Слова состояния и длины дроби, заданные как автоматический числовой тип с размером слова 16 и длиной дроби 15.
Это свойство применяется только в том случае, если для параметра StateDataType задано значение 'Custom'
.
NumeratorCoefficientsDataType
- Тип данных коэффициентов числителя'Same word length as input'
(по умолчанию) | 'Custom'
Тип данных коэффициентов числителя, заданный как один из следующих:
'Same word length as input'
- размер слова коэффициентов числителя совпадает с входом размера слова. Длину дроби выбирают так, чтобы получить максимально возможную точность.
'Custom'
- Тип данных коэффициентов числителя является автоматическим числовым типом, заданным свойством CustomNumeratorCofficientsDataType.
CustomNumeratorCoefficientsDataType
- Длина слова и дроби коэффициентов числителяnumerictype([],16,15)
(по умолчанию)Длина слова и дроби коэффициентов числителя, заданная как автоматический числовой тип с размером слова 16 и длиной дроби 15.
Это свойство применяется только, когда для NumeratorCoefficientsDataType задано значение 'Custom'
.
DenominatorCoefficientsDataType
- Тип данных коэффициентов знаменателя'Same word length as input'
(по умолчанию) | 'Custom'
Тип данных коэффициентов знаменателя, заданный как один из следующих:
'Same word length as input'
- размер слова коэффициентов знаменателя те же, что и у входа размера слова. Длину дроби выбирают так, чтобы получить максимально возможную точность.
'Custom'
- Тип данных коэффициентов знаменателя является автоматическим числовым типом, заданным свойством CustomDenominatorCofficientsDataType.
CustomDenominatorCoefficientsDataType
- Длина слова и дроби коэффициентов знаменателяnumerictype([],16,15)
(по умолчанию)Длина слова и дроби коэффициентов знаменателя, заданная как автоматический числовой тип с размером слова 16 и длиной дроби 15.
Это свойство применяется только, когда вы устанавливаете DenominatorCoefficientsDataType на 'Custom'
.
NumeratorProductDataType
- Тип данных продукта числителя'Full precision'
(по умолчанию) | 'Same as input'
| 'Custom'
Тип данных выхода операции продукта в полиноме числителя БИХ, заданный как один из следующих:
'Full precision'
-- Объект вычисляет тип выходных данных продукта числителя с помощью правил полной точности. Эти правила обеспечивают наиболее точные числа с фиксированной точкой. Квантование не происходит. Биты добавляются по мере необходимости, чтобы гарантировать отсутствие округления или переполнения.
'Same as input'
- Тип выходных данных продукта совпадает с типом входных данных.
'Custom'
- Тип выходных данных продукта является пользовательским числовым типом, заданным свойством CustomNumeratorProductDataType. Метод округления и действие переполнения заданы свойствами RoundingMethod и OverflowAction.
CustomNumeratorProductDataType
- Слово продукта числителя и длины дробейnumerictype([],32,30)
(по умолчанию)Продукты числителя и длины дроби, заданные как автоматический числовой тип с размером слова 32 и длиной дроби 30.
Это свойство применяется только, когда для NumeratorProductDataType задано значение 'Custom'
.
DenominatorProductDataType
- Тип данных продукта знаменателя'Full precision'
(по умолчанию) | 'Same as input'
| 'Custom'
Тип данных выхода операции продукта в полиноме знаменателя БИХ, заданный как одно из следующего:
'Full precision'
-- Объект вычисляет тип выходных данных продукта знаменателя с помощью правил полной точности. Эти правила обеспечивают наиболее точные числа с фиксированной точкой. Квантование не происходит. Биты добавляются по мере необходимости, чтобы гарантировать отсутствие округления или переполнения.
'Same as input'
- Тип выходных данных продукта совпадает с типом входных данных.
'Custom'
- Тип выходных данных продукта является пользовательским числовым типом, заданным свойством CustomDenominatorProductDataType. Метод округления и действие переполнения заданы свойствами RoundingMethod и OverflowAction.
CustomDenominatorProductDataType
- Слово продукта знаменателя и длины дробейnumerictype([],32,30)
(по умолчанию)Продукты знаменателя и длины дроби, заданные как автоматический числовой тип с размером слова 32 и длиной дроби 30.
Это свойство применяется только, когда для DenominatorProductDataType задано значение 'Custom'
.
NumeratorAccumulatorDataType
- Тип данных аккумулятора числителя'Full precision'
(по умолчанию) | 'Same as input'
| 'Same as product'
| 'Custom'
Тип данных выхода операции накопления в полиноме числителя БИХ, заданный как одно из следующего:
'Full precision'
-- Объект вычисляет тип данных аккумулятора числителя с помощью правил полной точности. Эти правила обеспечивают наиболее точные числа с фиксированной точкой. Квантование не происходит. Биты добавляются по мере необходимости, чтобы гарантировать отсутствие округления или переполнения.
'Same as input'
- Тип данных аккумулятора совпадает с типом входных данных.
'Same as product'
- Тип данных аккумулятора совпадает с типом выходных данных продукта.
'Custom'
- Тип данных аккумулятора является пользовательским числовым типом, заданным свойством CustomNumeratorAccumulatorDataType. Метод округления и действие переполнения заданы свойствами RoundingMethod и OverflowAction.
CustomNumeratorAccumulatorDataType
- Слово аккумулятора числителя и длины дробейnumerictype([],32,30)
(по умолчанию)Слово-накопитель числителя и длины дробей, заданные как автоматический числовой тип с размером слова 32 и длиной дроби 30.
Это свойство применяется только, когда для NumeratorAccumulatorDataType задано значение 'Custom'
.
DenominatorAccumulatorDataType
- Тип данных аккумулятора знаменателя'Full precision'
(по умолчанию) | 'Same as input'
| 'Same as product'
| 'Custom'
Тип данных выхода операции накопления в полиноме знаменателя БИХ, заданный как одно из следующего:
'Full precision'
-- Объект вычисляет тип данных аккумулятора знаменателя с помощью правил полной точности. Эти правила обеспечивают наиболее точные числа с фиксированной точкой. Квантование не происходит. Биты добавляются по мере необходимости, чтобы гарантировать отсутствие округления или переполнения.
'Same as input'
- Тип данных аккумулятора совпадает с типом входных данных.
'Same as product'
- Тип данных аккумулятора совпадает с типом выходных данных продукта.
'Custom'
- Тип данных аккумулятора является пользовательским числовым типом, заданным свойством CustomDenominatorAccumulatorDataType. Метод округления и действие переполнения заданы свойствами RoundingMethod и OverflowAction.
CustomDenominatorAccumulatorDataType
- Слово аккумулятора знаменателя и длины дробейnumerictype([],32,30)
(по умолчанию)Слово накопителя знаменателя и длины дробей, заданные как автоматический числовой тип с размером слова 32 и длиной дроби 30.
Это свойство применяется только, когда для DenominatorAccumulatorDataType задано значение 'Custom'
.
OutputDataType
- Тип выходных данных'Same as input'
(по умолчанию) | 'Full precision'
| 'Custom'
Тип данных выхода dsp.IIRFilter
объект, заданный как один из следующих:
'Same as input'
- Тип выходных данных совпадает с типом входных данных.
'Full precision'
-- Объект вычисляет тип выходных данных с помощью правил полной точности. Эти правила обеспечивают наиболее точные числа с фиксированной точкой. Квантование не происходит. Биты добавляются по мере необходимости, чтобы гарантировать отсутствие округления или переполнения.
'Custom'
- выход данных является пользовательским числовым типом, заданным свойством CustomOutputDataType. Метод округления и действие переполнения заданы свойствами RoundingMethod и OverflowAction.
CustomOutputDataType
- Выход слова и длин дробейnumerictype([],16,15)
(по умолчанию)Выход словосочетаний и дробей, заданных как автоматический числовой тип с размером слова 16 и длиной дроби 15.
Это свойство применяется только, когда вы устанавливаете OutputDataType на 'Custom'
.
MultiplicandDataType
- Тип данных Multiplicand'Same as input'
(по умолчанию) | 'Custom'
Тип данных Multiplicand, заданный как один из следующих:
'Same as input'
- Тип данных multiplicand совпадает с типом входных данных.
'Custom'
- Тип данных multiplicand является автоматическим числовым типом, заданным свойством CustomMultiplicandDataType.
CustomMultiplicandDataType
- Длина выходного слова и дроби Multiplicandnumerictype([],16,15)
(по умолчанию)Множитель выводит слово и длины дроби, заданные как автоматический числовой тип с размером слова 16 и длиной дроби 15.
Это свойство применяется только, когда вы устанавливаете MultiplicandDataType на 'Custom'
.
input
- Вход данныхВход данных, который фильтруется, задается как вектор или матрица.
Пример: randn(34,24)
Типы данных: single
| double
| int8
| int16
| int32
| int64
| fi
Поддержка комплексного числа: Да
iirOut
- Отфильтрованный выходОтфильтрованный выход, возвращенный как вектор или матрица. Размер, тип данных и сложность вывода совпадают с размером входа.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| fi
Поддержка комплексного числа: Да
Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj
, используйте следующий синтаксис:
release(obj)
freqz | Частотная характеристика фильтра в дискретном времени Системного объекта |
fvtool | Визуализация частотной характеристики фильтров DSP |
impz | Импульсная характеристика фильтра в дискретном времени Системного объекта |
phasez | Фазовый отклик фильтра в дискретном времени Системного объекта (без обертки) |
sos | Преобразуйте в разделы второго порядка |
Для списка методов анализа фильтров, которые поддержки этот объект, введите dsp.IIRFilter.helpFilterAnalysis
в MATLAB® командная строка. Для соответствующих страниц с описанием функции смотрите Методы анализа для Фильтрация системных объектов.
Фильтрация шумного синусоидального сигнала с помощью lowpass butterworth БИХ.
Примечание.Если вы используете R2016a или более ранний релиз, замените каждый вызов объекта эквивалентным синтаксисом шага. Для примера, obj(x)
становится step(obj,x)
.
Входной сигнал
Входной сигнал имеет три тональных сигнала, 1 кГц, 5 кГц и 12 кГц.
Sine1 = dsp.SineWave('Frequency',1e3,'SampleRate',44.1e3); Sine2 = dsp.SineWave('Frequency',5e3,'SampleRate',44.1e3); Sine3 = dsp.SineWave('Frequency',12e3,'SampleRate',44.1e3);
Создание фильтра
Используйте butter
функция для разработки lowpass фильтра Баттерворта 10-го порядка.
N = 10; Fc = 0.4; [b,a] = butter(N,Fc);
Создайте dsp.IIRFilter
и присвойте проектируемые коэффициенты Numerator
и Denominator
свойства.
iir = dsp.IIRFilter('Numerator',b,'Denominator',a);
Просмотрите величину ответ фильтра. Частота отсечения составляет 0,4 рад/выборка, которая со скоростью дискретизации 44,1 кГц переводится в или 8,82 кГц.
fvtool(iir,'Fs',Sine1.SampleRate)
Просмотрите степень спектр входа и выходного сигнала с помощью Spectrum Analyzer
.
sa = dsp.SpectrumAnalyzer('SampleRate',Sine1.SampleRate,'NumInputPorts',2,... 'PlotAsTwoSidedSpectrum',false,... 'OverlapPercent',80,'PowerUnits','dBW',... 'YLimits',[-220 -10]);
Вытекание
Добавьте средний белый Гауссов шум со стандартным отклонением 0,01 к сумме синусоид. Пропустите сигнал с помощью БИХ.
Тоны с частотой 1 кГц и 5 кГц не влияют, поскольку они падают в полосе пропускания. Частота на 12 кГц ослабляется, поскольку она падает в полосе переходов фильтра.
for i = 1:1000 input = Sine1()+Sine2()+Sine3()+0.01*randn(Sine1.SamplesPerFrame,1); output = iir(input); sa(input,output) end
Создайте узкополосный гребенчатый фильтр с 8 узлами и узкополосной полосой 0,02, привязанной к уровню -3 дБ.
Создайте comb
отфильтровать объект спецификации проекта с помощью fdesign.comb
и задайте эти расчётные параметры.
combSpecs = fdesign.comb('notch','N,BW',8,0.02);
Спроектируйте резьбовой гребенчатый фильтр, используя design
функция. Получившийся фильтр является dsp.IIRFilter
Системные object™. Для получения дополнительной информации о том, как применить этот фильтр к потоковым данным, см. dsp.IIRFilter
.
iirFilt = design(combSpecs,'Systemobject',true)
iirFilt = dsp.IIRFilter with properties: Structure: 'Direct form II' Numerator: [0.8878 0 0 0 0 0 0 0 -0.8878] Denominator: [1 0 0 0 0 0 0 0 -0.7757] InitialConditions: 0 Show all properties
Просмотрите величину ответ проектируемого фильтра, используя fvtool
.
fvtool(iirFilt)
Указания и ограничения по применению:
Только Numerator
и Denominator
свойства настраиваются для генерации кода.
Смотрите Системные объекты в Генерации кода MATLAB (MATLAB Coder).
The dsp.IIRFilter
Системный объект поддерживает следующие структуры фильтра. На схемах в каждом разделе показаны типы данных, используемые в структурах фильтра для сигналов с фиксированной точкой. Можно задать типы данных с помощью свойств с фиксированной точкой объекта.
Следующие ограничения применяются, когда Structure
для свойства задано значение 'Direct form I'
:
Входы могут быть реальными или комплексными.
Коэффициенты числителя и знаменателя могут быть действительными или комплексными.
Коэффициенты числителя и знаменателя должны иметь одинаковые характеристики сложности. Когда коэффициенты числителя и знаменателя имеют отличную сложность друг от друга, объект обрабатывает фильтр так, как если бы были предусмотрены два набора комплексных коэффициентов. Набор вещественных коэффициентов рассматривается как комплексный вектор с нулевыми мнимыми частями.
Тип данных State не может быть задан для этой структуры. Это невозможно, потому что входное и выходное состояния имеют совпадающие типы данных, что и входной и выходной буферы.
Следующие ограничения применяются, когда Structure
для свойства задано значение 'Direct form I transposed'
:
Входы могут быть реальными или комплексными.
Коэффициенты числителя и знаменателя могут быть действительными или комплексными.
Коэффициенты числителя и знаменателя должны иметь одинаковые характеристики сложности. Когда коэффициенты числителя и знаменателя имеют отличную сложность друг от друга, объект обрабатывает фильтр так, как если бы были предусмотрены два набора комплексных коэффициентов. Набор вещественных коэффициентов рассматривается как комплексный вектор с нулевыми мнимыми частями.
Состояния комплексны, когда входной параметр или коэффициенты комплексны.
Следующие ограничения применяются, когда Structure
для свойства задано значение 'Direct form II'
:
Входы могут быть реальными или комплексными.
Коэффициенты числителя и знаменателя могут быть действительными или комплексными.
Коэффициенты числителя и знаменателя должны иметь одинаковые характеристики сложности. Когда коэффициенты числителя и знаменателя имеют отличную сложность друг от друга, объект обрабатывает фильтр так, как если бы были предусмотрены два набора комплексных коэффициентов. Набор вещественных коэффициентов рассматривается как комплексный вектор с нулевыми мнимыми частями.
Состояния комплексны, когда входы или коэффициенты комплексны.
Следующие ограничения применяются, когда Structure
для свойства задано значение 'Direct form II transposed'
:
Входы могут быть реальными или комплексными.
Коэффициенты числителя и знаменателя могут быть действительными или комплексными.
Коэффициенты числителя и знаменателя должны иметь одинаковые характеристики сложности. Когда коэффициенты числителя и знаменателя имеют отличную сложность друг от друга, объект обрабатывает фильтр так, как если бы были предусмотрены два набора комплексных коэффициентов. Набор вещественных коэффициентов рассматривается как комплексный вектор с нулевыми мнимыми частями.
Состояния комплексны, когда входы или коэффициенты комплексны.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.