Фильтр с бесконечной импульсной характеристикой (БИХ)
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.