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. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Описание

пример

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

пример

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

Пример: iir = dsp. IIRFilter ('Структура', 'Прямая форма I');

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (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Развернутый фазовый отклик для фильтра
stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Для списка методов анализа фильтра это поддержка объектов введите dsp.IIRFilter.helpFilterAnalysis в командной строке MATLAB®. Для соответствующих страниц ссылки на функцию смотрите Методы анализа для Системных объектов Фильтра.

Примеры

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

Примечание: Если вы используете R2016a или более ранний релиз, заменяете каждый вызов объекта с эквивалентным синтаксисом шага. Например, obj(x) становится step(obj,x).

Просмотрите ответ величины БИХ-фильтра. Используйте Spectrum Analyzer отобразить спектр мощности выходного сигнала.

Инициализация

x = randn(2048,1);
x = x-mean(x);
src = dsp.SignalSource;
src.Signal = x;
sink = dsp.SignalSink;

N = 10;
Fc = 0.4;
[b,a] = butter(N,Fc);
iir = dsp.IIRFilter('Numerator',b,'Denominator',a);

sa = dsp.SpectrumAnalyzer('SampleRate',8e3,...
    'PlotAsTwoSidedSpectrum',false,...
    'OverlapPercent',80,'PowerUnits','dBW',...
    'YLimits',[-220 -10]);

Отфильтруйте сигнал

while ~isDone(src)
  input = src();
  output = iir(input);
  sa(output)
  sink(output);
end

Result = sink.Buffer;
fvtool(iir,'Fs',8000)

Этот пример показывает два способа спроектировать БИХ-фильтр.

Спроектируйте фильтр с помощью fdesign и design.

D = fdesign.comb('notch','N,BW',8,0.02);
iir = design(D,'systemobject',true)
iir = 
  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(iir);

Спроектируйте фильтр с помощью коэффициентов фильтра.

b = [0.9 zeros(9,1)' -0.9];
a = [1 zeros(9,1)' -0.8];
iir = dsp.IIRFilter('Numerator',b,'Denominator',a)
iir = 
  dsp.IIRFilter with properties:

            Structure: 'Direct form II transposed'
            Numerator: [0.9000 0 0 0 0 0 0 0 0 0 -0.9000]
          Denominator: [1 0 0 0 0 0 0 0 0 0 -0.8000]
    InitialConditions: 0

  Show all properties

fvtool(iir);

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

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

Функции

Системные объекты

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