exponenta event banner

dsp. IIRFilter

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

Описание

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

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

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

  1. Создать dsp.IIRFilter и задайте его свойства.

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

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

Создание

Описание

пример

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

пример

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Зависимости

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

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

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

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

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

Зависимости

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

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

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

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

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

Зависимости

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

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

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

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

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

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

Зависимости

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

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

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

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

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

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

Зависимости

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

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

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

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

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

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

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

Зависимости

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

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

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

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

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

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

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

Зависимости

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

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

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

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

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

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

Зависимости

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

Мультипликативный тип данных:

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

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

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

Зависимости

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

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

Синтаксис

Описание

пример

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

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

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

Данные, которые фильтруются, указываются как вектор или матрица.

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

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

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

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

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

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

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

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

release(obj)

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

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

Для получения списка методов анализа фильтра, поддерживаемых данным объектом, введите 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 кГц переводится в 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