Фильтр с бесконечной импульсной характеристикой (БИХ)
dsp.IIRFilter Системный object™ фильтрует каждый канал входа с помощью указанного фильтра. Можно указать фильтр для 'Direct form I', 'Direct form I transposed', 'Direct form II', или 'Direct form II transposed' структура.
Используйте свойства Числитель (Numerator) и Знаменатель (Denominator), чтобы задать коэффициенты числителя фильтра и коэффициенты знаменателя. В дополнение к этим коэффициентам можно также указать ненулевые начальные состояния фильтра с помощью свойства InitityConditions.
Для фильтрации сигнала с помощью БИХ-фильтра:
Создать dsp.IIRFilter и задайте его свойства.
Вызовите объект с аргументами, как если бы это была функция.
Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.
создает объект System с бесконечной импульсной характеристикой (IIR), который независимо фильтрует каждый канал ввода с течением времени, используя указанную реализацию фильтра IIR.iir = dsp.IIRFilter
создает объект фильтра IIR с заданным значением каждого свойства. Заключите каждое имя свойства в отдельные кавычки.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 (по умолчанию) | скаляр | вектор | матрицаИсходные условия состояний фильтра, указанные как одно из следующих:
scalar -- объект инициализирует все элементы задержки в фильтре до скалярного значения.
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 (по умолчанию) | скаляр | вектор | матрицаНачальные условия состояний фильтра со стороны конструкции фильтра с нулями, указанные как одно из следующих:
scalar -- объект инициализирует все элементы задержки на стороне нулей в фильтре до скалярного значения.
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 (по умолчанию) | скаляр | вектор | матрицаИсходные условия состояния фильтра со стороны конструкции фильтра с полюсами, указанные как одно из следующих:
scalar -- объект инициализирует все элементы задержки на стороне полюсов в фильтре до скалярного значения.
Вектор - длина вектора равна количеству элементов задержки на стороне полюсов в фильтре. Каждый векторный элемент определяет уникальное начальное условие для соответствующего элемента задержки на стороне полюсов. Объект применяет один и тот же вектор начальных условий к каждому каналу входного сигнала.
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' - Тип данных числительных коэффициентов - это автоматически присвоенный числовой тип, заданный свойством CustomNumerateDamedDataType.
CustomNumeratorCoefficientsDataType - длины слов и дробей числительных коэффициентов;numerictype([],16,15) (по умолчанию)Длины словосочетаний и дробей числительных коэффициентов, определяемые как автоматически назначаемый числовой тип с длиной слова 16 и длиной дробей 15.
Это свойство применяется только в том случае, если для параметра NumberEdingDataType установлено значение 'Custom'.
DenominatorCoefficientsDataType - Тип данных коэффициентов знаменателя'Same word length as input' (по умолчанию) | 'Custom'Тип данных коэффициентов знаменателя, указанный как один из следующих:
'Same word length as input' - Длина слова коэффициентов знаменателя равна длине входного слова. Длина фракции выбирается таким образом, чтобы обеспечить максимальную точность.
'Custom' - Тип данных коэффициентов знаменателя - это автоматически обозначенный числовой тип, заданный свойством CustomDenominateTalkingDataType.
CustomDenominatorCoefficientsDataType - Длины словосочетаний и дробей коэффициентов знаменателяnumerictype([],16,15) (по умолчанию)Длины словосочетаний и дробей коэффициентов знаменателя, определяемые как автоматически назначаемый числовой тип с длиной слова 16 и длиной дробей 15.
Это свойство применяется только в том случае, если для параметра DenominateExcharingDataType задано значение 'Custom'.
NumeratorProductDataType - Числитель типа данных продукта'Full precision' (по умолчанию) | 'Same as input' | 'Custom'Тип данных вывода операции произведения в многочлене числителя фильтра БИХ, указанный как одно из следующих значений:
'Full precision' - Объект вычисляет тип выходных данных продукта числителя с использованием правил полной точности. Эти правила обеспечивают наиболее точные числа фиксированных точек. Квантование не происходит. При необходимости добавляются биты, чтобы гарантировать отсутствие скругления или переполнения.
'Same as input' - Тип выходных данных продукта совпадает с типом входных данных.
'Custom' -- Тип выходных данных продукта - это настраиваемый числовой тип, указанный свойством CustomNumberProductDataType. Метод округления и действие переполнения задаются свойствами RowingMethod и OverflowAction.
CustomNumeratorProductDataType - Числитель длины словосочетаний и дробейnumerictype([],32,30) (по умолчанию)Числитель длин слов и дробей, определяемый как автоматически обозначенный числовой тип с длиной слова 32 и длиной дроби 30.
Это свойство применяется только в том случае, если для параметра NumberProductDataType задано значение 'Custom'.
DenominatorProductDataType - Тип данных продукта знаменателя'Full precision' (по умолчанию) | 'Same as input' | 'Custom'Тип данных вывода операции произведения в многочлене знаменателя фильтра БИХ, указанный как одно из следующих значений:
'Full precision' - Объект вычисляет тип выходных данных продукта знаменателя с помощью правил полной точности. Эти правила обеспечивают наиболее точные числа фиксированных точек. Квантование не происходит. При необходимости добавляются биты, чтобы гарантировать отсутствие скругления или переполнения.
'Same as input' - Тип выходных данных продукта совпадает с типом входных данных.
'Custom' - Тип выходных данных продукта является пользовательским числовым типом, указанным свойством CustomDenominateProductDataType. Метод округления и действие переполнения задаются свойствами RowingMethod и OverflowAction.
CustomDenominatorProductDataType - Длина словосочетания и дроби знаменателяnumerictype([],32,30) (по умолчанию)Словосочетание и длины дробей, определяемые как автоматически обозначенный числовой тип с длиной слова 32 и длиной дроби 30.
Это свойство применяется только в том случае, если для DenominateProductDataType задано значение 'Custom'.
NumeratorAccumulatorDataType - Тип данных сумматора числителя'Full precision' (по умолчанию) | 'Same as input' | 'Same as product' | 'Custom'Тип данных выхода операции накопления в числительном полиноме БИХ-фильтра, определяемый как одно из следующих значений:
'Full precision' - Объект вычисляет тип данных сумматора числителя с помощью правил полной точности. Эти правила обеспечивают наиболее точные числа фиксированных точек. Квантование не происходит. При необходимости добавляются биты, чтобы гарантировать отсутствие скругления или переполнения.
'Same as input' - Тип данных накопителя совпадает с типом входных данных.
'Same as product' - Тип данных накопителя совпадает с типом выходных данных продукта.
'Custom' -- Тип данных накопителя - это пользовательский числовой тип, заданный свойством CustomNumerateAccumerAcculateDataType. Метод округления и действие переполнения задаются свойствами RowingMethod и OverflowAction.
CustomNumeratorAccumulatorDataType - Длины слов и дробей сумматора числителяnumerictype([],32,30) (по умолчанию)Словосочетание и словосочетание числового накопителя, определяемые как автоматически назначаемый числовой тип с длиной слова 32 и длиной дроби 30.
Это свойство применяется только в том случае, если для параметра NumberAccumateDataType установлено значение 'Custom'.
DenominatorAccumulatorDataType - Тип данных сумматора знаменателя'Full precision' (по умолчанию) | 'Same as input' | 'Same as product' | 'Custom'Тип данных выхода операции накопления в многочлене знаменателя фильтра БИХ, определяемый как одно из следующих значений:
'Full precision' - Объект вычисляет тип данных сумматора знаменателя с помощью правил полной точности. Эти правила обеспечивают наиболее точные числа фиксированных точек. Квантование не происходит. При необходимости добавляются биты, чтобы гарантировать отсутствие скругления или переполнения.
'Same as input' - Тип данных накопителя совпадает с типом входных данных.
'Same as product' - Тип данных накопителя совпадает с типом выходных данных продукта.
'Custom' - Тип данных накопителя - это пользовательский числовой тип, заданный свойством CustomDenominateAccumentureDataType. Метод округления и действие переполнения задаются свойствами RowingMethod и OverflowAction.
CustomDenominatorAccumulatorDataType - Длина слова и дроби сумматора знаменателяnumerictype([],32,30) (по умолчанию)Длина слова и дроби сумматора знаменателя, определяемая как автоматически обозначенный числовой тип с длиной слова 32 и длиной дроби 30.
Это свойство применяется только в том случае, если для параметра DenominateAccumentureDataType задано значение 'Custom'.
OutputDataType - Тип выходных данных'Same as input' (по умолчанию) | 'Full precision' | 'Custom'Тип данных вывода dsp.IIRFilter объект, указанный как один из следующих:
'Same as input' - Тип выходных данных совпадает с типом входных данных.
'Full precision' - Объект вычисляет тип выходных данных с помощью правил полной точности. Эти правила обеспечивают наиболее точные числа фиксированных точек. Квантование не происходит. При необходимости добавляются биты, чтобы гарантировать отсутствие скругления или переполнения.
'Custom' -- Тип выходных данных является пользовательским числовым типом, указанным свойством CustomOutputDataType. Метод округления и действие переполнения задаются свойствами RowingMethod и OverflowAction.
CustomOutputDataType - Длина выходного слова и дробиnumerictype([],16,15) (по умолчанию)Выходные длины слов и дробей, определяемые как автоматически назначаемый числовой тип с длиной слова 16 и длиной дроби 15.
Это свойство применяется только при установке для OutputDataType значения 'Custom'.
MultiplicandDataType - Мультипликативный тип данных'Same as input' (по умолчанию) | 'Custom'Мультипликативный тип данных:
'Same as input' - Тип данных multiplicand совпадает с типом входных данных.
'Custom' - Тип данных multiplicand - это автоматически назначаемый числовой тип, определяемый свойством CustomMultiplicandDataType.
CustomMultiplicandDataType - Длины мультипликативных слов и дробейnumerictype([],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
Поддержка комплексного номера: Да
Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:
release(obj)
freqz | Частотная характеристика объекта системы дискретно-временного фильтра |
fvtool | Визуализация частотной характеристики фильтров DSP |
impz | Импульсная характеристика объекта системы дискретно-временного фильтра |
phasez | Фазовый отклик объекта System дискретно-временного фильтра (развернутый) |
sos | Преобразовать в разделы второго порядка |
Для получения списка методов анализа фильтра, поддерживаемых данным объектом, введите dsp.IIRFilter.helpFilterAnalysis в командной строке MATLAB ®. Соответствующие страницы ссылок на функции см. в разделе Методы анализа для фильтрации системных объектов.
Фильтрация шумного синусоидального сигнала с помощью низкочастотного баттервортного БИХ-фильтра.
Примечание.При использовании 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 для проектирования фильтра Баттерворта 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 кГц переводится в 44100/2 или 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).
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.