dsp.IIRFilter

Фильтр импульсной характеристики Бога (IIR)

Описание

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

пример

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

Пример: iir = dsp.IIRFilter ('Структура', 'Прямая форма 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
Поддержка комплексного числа: Да

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

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

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

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

Количество состояний фильтра равняется макс. (N, M) – 1, где N является количеством полюсов, и M является количеством нулей.

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

Зависимости

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

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

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

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

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

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

Количество состояний фильтра равняется макс. (N, M) – 1, где N является количеством полюсов, и M является количеством нулей, соответственно.

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

Зависимости

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

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

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

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

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

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

Количество состояний фильтра равняется макс. (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' – Тип данных коэффициентов числителя является числовым типом автосо знаком, заданным свойством CustomNumeratorCoefficientsDataType.

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

Зависимости

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

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

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

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

Word и дробные длины коэффициентов знаменателя в виде числового типа автосо знаком с размером слова 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'.

Тип данных множимого в виде одного из следующего:

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

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

Multiplicand слово выхода и дробные длины в виде числового типа автосо знаком с размером слова 16 и дробная длина 15.

Зависимости

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

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

Синтаксис

Описание

пример

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

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

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

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

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

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

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

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

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

Типы данных: 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 функционируйте, чтобы спроектировать 10-й порядок Фильтр Баттерворта lowpass.

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)

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

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

Смотрите также

Функции

Объекты

Представленный в R2012b