dsp.IIRFilter

Фильтр с бесконечной импульсной характеристикой (БИХ)

Описание

The dsp.IIRFilter Системный object™ фильтрует каждый канал входа с помощью заданного фильтра. Можно задать фильтр для 'Direct form I', 'Direct form I transposed', 'Direct form II', или 'Direct form II transposed' структура.

Используйте свойства Numerator и Denominator, чтобы задать коэффициенты числителя фильтра и коэффициенты знаменателя. В дополнение к этим коэффициентам можно также задать ненулевые начальные состояния фильтра через свойство InitialConditions.

Для фильтрации сигнала с помощью БИХ:

  1. Создайте dsp.IIRFilter Объекту и установите его свойства.

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

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

Создание

Описание

пример

iir = dsp.IIRFilter создает фильтр с бесконечной импульсной характеристикой (БИХ) Системного объекта который независимо фильтрует каждый канал входа с течением времени с помощью заданной реализации БИХ фильтра.

пример

iir = dsp.IIRFilter(Name,Value) создает объект фильтра БИХ с каждым заданным набором свойств до заданного значения. Заключайте каждое имя свойства в одинарные кавычки.

Пример: iir = dsp. IIRFilter ('Structure', 'Direct form I');

Свойства

расширить все

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

Структура БИХ, заданная как 'Direct form I', 'Direct form I transposed', 'Direct form II', или 'Direct form II transposed'.

Коэффициенты числителя, заданные как вектор-строка.

Пример: [0.0296 0.1775 0.4438 0.5918 0.4438 0.1775 0.0296]

Настраиваемый: Да

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

Коэффициенты знаменателя, заданные как вектор-строка.

Пример: [1.0000 -0.0000 0.7777 -0.0000 0.1142 -0.0000 0.0018]

Настраиваемый: Да

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

Начальные условия состояния фильтра, заданные как одно из следующего:

  • скаляр -- Объект инициализирует все элементы задержки в фильтре до скалярного значения.

  • 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
Поддержка комплексного числа: Да

Начальные условия состояний фильтра на стороне структуры фильтра с нулями, заданные как одно из следующих:

  • скаляр -- Объект инициализирует все элементы задержки на стороне нулей в фильтре до скалярного значения.

  • 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
Поддержка комплексного числа: Да

Начальные условия состояния фильтра на стороне структуры фильтра с полюсами, заданные как одно из следующих:

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

  • 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
Поддержка комплексного числа: Да

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

Выберите режим округления для операций с фиксированной точкой.

Действие переполнения для операций с фиксированной точкой, заданное как одно из следующего:

  • 'Wrap' - Объект переносит результат своих операций с фиксированной точкой.

  • 'Saturate' - Объект насыщает результат своих операций с фиксированной точкой.

Для получения дополнительной информации о действиях переполнения смотрите режим переполнения для операций с фиксированной точкой.

Тип данных о состоянии, заданный как один из следующих:

  • 'Same as input' - Тип данных о состоянии совпадает с типом входных данных.

  • 'Custom' - Тип выходных данных состояния является автоматическим числовым типом через свойство CustomStateDataType.

Слова состояния и длины дроби, заданные как автоматический числовой тип с размером слова 16 и длиной дроби 15.

Зависимости

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

Тип данных коэффициентов числителя, заданный как один из следующих:

  • 'Same word length as input' - размер слова коэффициентов числителя совпадает с входом размера слова. Длину дроби выбирают так, чтобы получить максимально возможную точность.

  • 'Custom' - Тип данных коэффициентов числителя является автоматическим числовым типом, заданным свойством CustomNumeratorCofficientsDataType.

Длина слова и дроби коэффициентов числителя, заданная как автоматический числовой тип с размером слова 16 и длиной дроби 15.

Зависимости

Это свойство применяется только, когда для NumeratorCoefficientsDataType задано значение 'Custom'.

Тип данных коэффициентов знаменателя, заданный как один из следующих:

  • 'Same word length as input' - размер слова коэффициентов знаменателя те же, что и у входа размера слова. Длину дроби выбирают так, чтобы получить максимально возможную точность.

  • 'Custom' - Тип данных коэффициентов знаменателя является автоматическим числовым типом, заданным свойством CustomDenominatorCofficientsDataType.

Длина слова и дроби коэффициентов знаменателя, заданная как автоматический числовой тип с размером слова 16 и длиной дроби 15.

Зависимости

Это свойство применяется только, когда вы устанавливаете DenominatorCoefficientsDataType на 'Custom'.

Тип данных выхода операции продукта в полиноме числителя БИХ, заданный как один из следующих:

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

  • 'Same as input' - Тип выходных данных продукта совпадает с типом входных данных.

  • 'Custom' - Тип выходных данных продукта является пользовательским числовым типом, заданным свойством CustomNumeratorProductDataType. Метод округления и действие переполнения заданы свойствами RoundingMethod и OverflowAction.

Продукты числителя и длины дроби, заданные как автоматический числовой тип с размером слова 32 и длиной дроби 30.

Зависимости

Это свойство применяется только, когда для NumeratorProductDataType задано значение 'Custom'.

Тип данных выхода операции продукта в полиноме знаменателя БИХ, заданный как одно из следующего:

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

  • 'Same as input' - Тип выходных данных продукта совпадает с типом входных данных.

  • 'Custom' - Тип выходных данных продукта является пользовательским числовым типом, заданным свойством CustomDenominatorProductDataType. Метод округления и действие переполнения заданы свойствами RoundingMethod и OverflowAction.

Продукты знаменателя и длины дроби, заданные как автоматический числовой тип с размером слова 32 и длиной дроби 30.

Зависимости

Это свойство применяется только, когда для DenominatorProductDataType задано значение 'Custom'.

Тип данных выхода операции накопления в полиноме числителя БИХ, заданный как одно из следующего:

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

  • 'Same as input' - Тип данных аккумулятора совпадает с типом входных данных.

  • 'Same as product' - Тип данных аккумулятора совпадает с типом выходных данных продукта.

  • 'Custom' - Тип данных аккумулятора является пользовательским числовым типом, заданным свойством CustomNumeratorAccumulatorDataType. Метод округления и действие переполнения заданы свойствами RoundingMethod и OverflowAction.

Слово-накопитель числителя и длины дробей, заданные как автоматический числовой тип с размером слова 32 и длиной дроби 30.

Зависимости

Это свойство применяется только, когда для NumeratorAccumulatorDataType задано значение 'Custom'.

Тип данных выхода операции накопления в полиноме знаменателя БИХ, заданный как одно из следующего:

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

  • 'Same as input' - Тип данных аккумулятора совпадает с типом входных данных.

  • 'Same as product' - Тип данных аккумулятора совпадает с типом выходных данных продукта.

  • 'Custom' - Тип данных аккумулятора является пользовательским числовым типом, заданным свойством CustomDenominatorAccumulatorDataType. Метод округления и действие переполнения заданы свойствами RoundingMethod и OverflowAction.

Слово накопителя знаменателя и длины дробей, заданные как автоматический числовой тип с размером слова 32 и длиной дроби 30.

Зависимости

Это свойство применяется только, когда для DenominatorAccumulatorDataType задано значение 'Custom'.

Тип данных выхода dsp.IIRFilter объект, заданный как один из следующих:

  • 'Same as input' - Тип выходных данных совпадает с типом входных данных.

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

  • 'Custom' - выход данных является пользовательским числовым типом, заданным свойством CustomOutputDataType. Метод округления и действие переполнения заданы свойствами RoundingMethod и OverflowAction.

Выход словосочетаний и дробей, заданных как автоматический числовой тип с размером слова 16 и длиной дроби 15.

Зависимости

Это свойство применяется только, когда вы устанавливаете OutputDataType на 'Custom'.

Тип данных Multiplicand, заданный как один из следующих:

  • 'Same as input' - Тип данных multiplicand совпадает с типом входных данных.

  • 'Custom' - Тип данных multiplicand является автоматическим числовым типом, заданным свойством CustomMultiplicandDataType.

Множитель выводит слово и длины дроби, заданные как автоматический числовой тип с размером слова 16 и длиной дроби 15.

Зависимости

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

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

Синтаксис

Описание

пример

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

Входные параметры

расширить все

Вход данных, который фильтруется, задается как вектор или матрица.

Пример: randn(34,24)

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

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

расширить все

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

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

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

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

release(obj)

расширить все

freqzЧастотная характеристика фильтра в дискретном времени Системного объекта
fvtoolВизуализация частотной характеристики фильтров DSP
impzИмпульсная характеристика фильтра в дискретном времени Системного объекта
phasezФазовый отклик фильтра в дискретном времени Системного объекта (без обертки)
sosПреобразуйте в разделы второго порядка
stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта

Для списка методов анализа фильтров, которые поддержки этот объект, введите 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 кГц переводится в 0.4×44100/2 или 8,82 кГц.

fvtool(iir,'Fs',Sine1.SampleRate)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains an object of type line.

Просмотрите степень спектр входа и выходного сигнала с помощью 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

Figure Spectrum Analyzer contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains 2 objects of type line. These objects represent Channel 1, Channel 2.

Создайте узкополосный гребенчатый фильтр с 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)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line.

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

.

См. также

Функции

Объекты

Введенный в R2012b