Фильтр импульсной характеристики Бога (IIR)
dsp.IIRFilter
Система object™ фильтрует каждый канал входа с помощью заданного фильтра. Можно задать фильтр, чтобы иметь 'Direct form I'
, 'Direct form I transposed'
, 'Direct form II'
, или 'Direct form II transposed'
структура.
Используйте свойства Numerator и Denominator задать коэффициенты числителя фильтра и коэффициенты знаменателя. В дополнение к этим коэффициентам можно также указать, что ненулевая начальная буква пропускает состояния через свойство InitialConditions.
Отфильтровать сигнал с помощью БИХ-фильтра:
Создайте dsp.IIRFilter
объект и набор его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
создает Системный объект фильтра бесконечной импульсной характеристики (IIR), который независимо фильтрует каждый канал входа в зависимости от времени с помощью заданной БИХ-реализации фильтра.iir
= dsp.IIRFilter
создает БИХ-объект фильтра с каждым заданным набором свойств к заданному значению. Заключите каждое имя свойства в одинарные кавычки.iir
= dsp.IIRFilter(Name,Value
)
Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их и release
функция разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (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
— Коэффициенты числителя
(значение по умолчанию) | вектор-строкаКоэффициенты числителя, заданные как вектор-строка.
Пример: [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.0000 -0.0000 0.7777 -0.0000 0.1142 -0.0000 0.0018
]
Настраиваемый: да
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Поддержка комплексного числа: Да
InitialConditions
— Начальные условия
(значение по умолчанию) | скаляр | вектор | матрицаНачальные условия состояний фильтра, заданных как одно из следующего:
скаляр – объект инициализирует все элементы задержки в фильтре к скалярному значению.
вектор – длина вектора равняется количеству элементов задержки в фильтре. Каждый векторный элемент задает уникальное начальное условие для соответствующего элемента задержки. Объект применяет тот же вектор к каждому каналу входного сигнала.
матрица – количество строк в матрице должно равняться количеству элементов задержки в фильтре. Количество столбцов в матрице должно равняться количеству каналов во входе. Каждый элемент задает уникальное начальное условие для соответствующего элемента задержки в соответствующем канале.
Количество состояний фильтра равняется макс. (N, M) – 1, где N является количеством полюсов, и M является количеством нулей.
Настраиваемый: да
Это свойство применяется только, когда вы устанавливаете свойство Structure на 'Direct form II'
или 'Direct form II transposed'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Поддержка комплексного числа: Да
NumeratorInitialConditions
— Начальные условия на нулевой стороне
(значение по умолчанию) | скаляр | вектор | матрицаНачальные условия фильтра утверждают на стороне структуры фильтра с нулями, заданными как одно из следующего:
скаляр – объект инициализирует все элементы задержки на нулевой стороне в фильтре к скалярному значению.
вектор – длина вектора равняется количеству элементов задержки на нулевой стороне в фильтре. Каждый векторный элемент задает уникальное начальное условие для соответствующего элемента задержки на нулевой стороне. Объект применяет тот же вектор начальных условий к каждому каналу входного сигнала.
матрица – количество строк в матрице должно равняться количеству элементов задержки на нулевой стороне в фильтре. Количество столбцов в матрице должно равняться количеству каналов во входном сигнале. Каждый элемент задает уникальное начальное условие для соответствующего элемента задержки на нулевой стороне в соответствующем канале.
Количество состояний фильтра равняется макс. (N, M) – 1, где N является количеством полюсов, и M является количеством нулей, соответственно.
Настраиваемый: да
Это свойство применяется только, когда вы устанавливаете свойство Structure на 'Direct form I'
или 'Direct form I transposed'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Поддержка комплексного числа: Да
DenominatorInitialConditions
— Начальные условия на стороне полюсов
(значение по умолчанию) | скаляр | вектор | матрицаНачальные условия фильтра утверждают на стороне структуры фильтра с полюсами, заданными как одно из следующего:
скаляр – объект инициализирует все элементы задержки на стороне полюсов в фильтре к скалярному значению.
вектор – длина вектора равняется количеству элементов задержки на стороне полюсов в фильтре. Каждый векторный элемент задает уникальное начальное условие для соответствующего элемента задержки на стороне полюсов. Объект применяет тот же вектор начальных условий к каждому каналу входного сигнала.
матрица – количество строк в матрице должно равняться количеству элементов задержки на стороне полюсов в фильтре. Количество столбцов в матрице должно равняться количеству каналов во входном сигнале. Каждый элемент задает уникальное начальное условие для соответствующего элемента задержки на стороне полюсов в соответствующем канале.
Количество состояний фильтра равняется макс. (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'
– Тип данных коэффициентов числителя является числовым типом автосо знаком, заданным свойством CustomNumeratorCoefficientsDataType.
CustomNumeratorCoefficientsDataType
— Word и дробные длины коэффициентов числителяnumerictype([],16,15)
(значение по умолчанию)Word и дробные длины коэффициентов числителя, заданных как числовой тип автосо знаком с размером слова 16 и дробной длиной 15.
Это свойство применяется только, когда вы устанавливаете NumeratorCoefficientsDataType на 'Custom'
.
DenominatorCoefficientsDataType
— Тип данных коэффициентов знаменателя'Same word length as input'
(значение по умолчанию) | 'Custom'
Тип данных коэффициентов знаменателя, заданных как одно из следующего:
'Same word length as input'
– Размер слова коэффициентов знаменателя совпадает с размером слова входного размера слова. Дробная длина выбрана, чтобы дать самую лучшую точность.
'Custom'
– Тип данных коэффициентов знаменателя является числовым типом автосо знаком, заданным свойством CustomDenominatorCoefficientsDataType.
CustomDenominatorCoefficientsDataType
— Word и дробные длины коэффициентов знаменателяnumerictype([],16,15)
(значение по умолчанию)Word и дробные длины коэффициентов знаменателя, заданных как числовой тип автосо знаком с размером слова 16 и дробной длиной 15.
Это свойство применяется только, когда вы устанавливаете DenominatorCoefficientsDataType на 'Custom'
.
NumeratorProductDataType
— Тип данных продукта числителя'Full precision'
(значение по умолчанию) | 'Same as input'
| 'Custom'
Тип данных выхода операции продукта в полиноме числителя БИХ-фильтра, заданного как одно из следующего:
'Full precision'
– Объект вычисляет тип выходных данных продукта числителя, использующий правила полной точности. Эти правила обеспечивают самые точные численные данные фиксированной точки. Никакое квантование не происходит. Биты добавляются, по мере необходимости, чтобы гарантировать, что никакое округление или переполнение не происходят.
'Same as input'
– Тип выходных данных продукта совпадает с типом входных данных.
'Custom'
– Тип выходных данных продукта является пользовательским числовым типом, заданным свойством CustomNumeratorProductDataType. Метод округления и действие переполнения заданы как свойства RoundingMethod и OverflowAction.
CustomNumeratorProductDataType
— Слово продукта числителя и дробные длиныnumerictype([],32,30)
(значение по умолчанию)Слово продукта числителя и дробные длины, заданные как числовой тип автосо знаком с размером слова 32 и дробной длиной 30.
Это свойство применяется только, когда вы устанавливаете NumeratorProductDataType на 'Custom'
.
DenominatorProductDataType
— Тип данных продукта знаменателя'Full precision'
(значение по умолчанию) | 'Same as input'
| 'Custom'
Тип данных выхода операции продукта в полиноме знаменателя БИХ-фильтра, заданного как одно из следующего:
'Full precision'
– Объект вычисляет тип выходных данных продукта знаменателя, использующий правила полной точности. Эти правила обеспечивают самые точные численные данные фиксированной точки. Никакое квантование не происходит. Биты добавляются, по мере необходимости, чтобы гарантировать, что никакое округление или переполнение не происходят.
'Same as input'
– Тип выходных данных продукта совпадает с типом входных данных.
'Custom'
– Тип выходных данных продукта является пользовательским числовым типом, заданным свойством CustomDenominatorProductDataType. Метод округления и действие переполнения заданы как свойства RoundingMethod и OverflowAction.
CustomDenominatorProductDataType
— Слово продукта знаменателя и дробные длиныnumerictype([],32,30)
(значение по умолчанию)Слово продукта знаменателя и дробные длины, заданные как числовой тип автосо знаком с размером слова 32 и дробной длиной 30.
Это свойство применяется только, когда вы устанавливаете DenominatorProductDataType на 'Custom'
.
NumeratorAccumulatorDataType
— Тип данных аккумулятора числителя'Full precision'
(значение по умолчанию) | 'Same as input'
| 'Same as product'
| 'Custom'
Тип данных выхода операции накопления в полиноме числителя БИХ-фильтра, заданного как одно из следующего:
'Full precision'
– Объект вычисляет тип данных аккумулятора числителя, использующий правила полной точности. Эти правила обеспечивают самые точные численные данные фиксированной точки. Никакое квантование не происходит. Биты добавляются, по мере необходимости, чтобы гарантировать, что никакое округление или переполнение не происходят.
'Same as input'
– Тип данных аккумулятора совпадает с типом входных данных.
'Same as product'
– Тип данных аккумулятора совпадает с типом выходных данных продукта.
'Custom'
– Тип данных аккумулятора является пользовательским числовым типом, заданным свойством CustomNumeratorAccumulatorDataType. Метод округления и действие переполнения заданы как свойства RoundingMethod и OverflowAction.
CustomNumeratorAccumulatorDataType
— Слово аккумулятора числителя и дробные длиныnumerictype([],32,30)
(значение по умолчанию)Слово аккумулятора числителя и дробные длины, заданные как числовой тип автосо знаком с размером слова 32 и дробной длиной 30.
Это свойство применяется только, когда вы устанавливаете NumeratorAccumulatorDataType на 'Custom'
.
DenominatorAccumulatorDataType
— Тип данных аккумулятора знаменателя'Full precision'
(значение по умолчанию) | 'Same as input'
| 'Same as product'
| 'Custom'
Тип данных выхода операции накопления в полиноме знаменателя БИХ-фильтра, заданного как одно из следующего:
'Full precision'
– Объект вычисляет тип данных аккумулятора знаменателя, использующий правила полной точности. Эти правила обеспечивают самые точные численные данные фиксированной точки. Никакое квантование не происходит. Биты добавляются, по мере необходимости, чтобы гарантировать, что никакое округление или переполнение не происходят.
'Same as input'
– Тип данных аккумулятора совпадает с типом входных данных.
'Same as product'
– Тип данных аккумулятора совпадает с типом выходных данных продукта.
'Custom'
– Тип данных аккумулятора является пользовательским числовым типом, заданным свойством CustomDenominatorAccumulatorDataType. Метод округления и действие переполнения заданы как свойства RoundingMethod и OverflowAction.
CustomDenominatorAccumulatorDataType
— Слово аккумулятора знаменателя и дробные длиныnumerictype([],32,30)
(значение по умолчанию)Слово аккумулятора знаменателя и дробные длины, заданные как числовой тип автосо знаком с размером слова 32 и дробной длиной 30.
Это свойство применяется только, когда вы устанавливаете DenominatorAccumulatorDataType на 'Custom'
.
OutputDataType
— Тип выходных данных'Same as input'
(значение по умолчанию) | 'Full precision'
| 'Custom'
Тип данных выхода dsp.IIRFilter
объект, заданный как одно из следующего:
'Same as input'
– Тип выходных данных совпадает с типом входных данных.
'Full precision'
– Объект вычисляет тип выходных данных, использующий правила полной точности. Эти правила обеспечивают самые точные численные данные фиксированной точки. Никакое квантование не происходит. Биты добавляются, по мере необходимости, чтобы гарантировать, что никакое округление или переполнение не происходят.
'Custom'
– Тип выходных данных является пользовательским числовым типом, заданным свойством CustomOutputDataType. Метод округления и действие переполнения заданы как свойства RoundingMethod и OverflowAction.
CustomOutputDataType
— Выведите слово и дробные длиныnumerictype([],16,15)
(значение по умолчанию)Выведите слово и дробные длины, заданные как числовой тип автосо знаком с размером слова 16 и дробной длиной 15.
Это свойство применяется только, когда вы устанавливаете OutputDataType на 'Custom'
.
MultiplicandDataType
— Тип данных множимого'Same as input'
(значение по умолчанию) | 'Custom'
Тип данных множимого, заданный как одно из следующего:
'Same as input'
– Тип данных множимого совпадает с типом входных данных.
'Custom'
– Тип данных множимого является числовым типом автосо знаком, задает свойством CustomMultiplicandDataType.
CustomMultiplicandDataType
— Multiplicand слово выхода и дробные длиныnumerictype([],16,15)
(значение по умолчанию)Multiplicand слово выхода и дробные длины, заданные как числовой тип автосо знаком с размером слова 16 и дробной длиной 15.
Это свойство применяется только, когда вы устанавливаете MultiplicandDataType на 'Custom'
.
input
— Ввод данныхВвод данных, который отфильтрован, задал как вектор или матрица.
Пример: randn(34,24)
Типы данных: single
| double
| int8
| int16
| int32
| int64
| fi
Поддержка комплексного числа: Да
iirOut
— Filtered выходФильтрованный выходной параметр, возвращенный как вектор или матрица. Размер, тип данных и сложность соответствия outpout тот из входа.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| fi
Поддержка комплексного числа: Да
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
Для списка методов анализа фильтра это поддержка объектов введите 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);
Указания и ограничения по применению:
Только Numerator
и Denominator
свойства являются настраиваемыми для генерации кода.
Смотрите системные объекты в Генерации кода MATLAB (MATLAB Coder).
dsp.IIRFilter
Системный объект поддерживает следующие структуры фильтра. Схемы в каждом разделе show типы данных используются в структурах фильтра в сигналах фиксированной точки. Можно установить типы данных с помощью свойств фиксированной точки объекта.
Следующие ограничения применяются когда Structure
свойство установлено в 'Direct form I'
:
Входные параметры могут быть действительными или комплексными.
Числитель и коэффициенты знаменателя могут быть действительными или комплексными.
Числитель и коэффициенты знаменателя должны иметь те же характеристики сложности. Когда числитель и коэффициенты знаменателя имеют различные сложности друг от друга, объектные процессы фильтр, как будто два набора комплексных коэффициентов обеспечиваются. Набор вещественного коэффициента обработан, как будто это - комплексный вектор с мнимыми частями с нулевым знаком.
Тип данных состояния не может быть задан для этой структуры. Выполнение так не возможно, потому что состояния ввода и вывода имеют совпадающие типы данных как буферы ввода и вывода.
Следующие ограничения применяются когда Structure
свойство установлено в 'Direct form I transposed'
:
Входные параметры могут быть действительными или комплексными.
Числитель и коэффициенты знаменателя могут быть действительными или комплексными.
Числитель и коэффициенты знаменателя должны иметь те же характеристики сложности. Когда числитель и коэффициенты знаменателя имеют различные сложности друг от друга, объектные процессы фильтр, как будто два набора комплексных коэффициентов обеспечиваются. Набор вещественного коэффициента обработан, как будто это - комплексный вектор с мнимыми частями с нулевым знаком.
Состояния являются комплексными, когда или вход или коэффициенты являются комплексными.
Следующие ограничения применяются когда Structure
свойство установлено в 'Direct form II'
:
Входные параметры могут быть действительными или комплексными.
Числитель и коэффициенты знаменателя могут быть действительными или комплексными.
Числитель и коэффициенты знаменателя должны иметь те же характеристики сложности. Когда числитель и коэффициенты знаменателя имеют различные сложности друг от друга, объектные процессы фильтр, как будто два набора комплексных коэффициентов обеспечиваются. Набор вещественного коэффициента обработан, как будто это - комплексный вектор с мнимыми частями с нулевым знаком.
Состояния являются комплексными, когда или входные параметры или коэффициенты являются комплексными.
Следующие ограничения применяются когда Structure
свойство установлено в 'Direct form II transposed'
:
Входные параметры могут быть действительными или комплексными.
Числитель и коэффициенты знаменателя могут быть действительными или комплексными.
Числитель и коэффициенты знаменателя должны иметь те же характеристики сложности. Когда числитель и коэффициенты знаменателя имеют различные сложности друг от друга, объектные процессы фильтр, как будто два набора комплексных коэффициентов обеспечиваются. Набор вещественного коэффициента обработан, как будто это - комплексный вектор с мнимыми частями с нулевым знаком.
Состояния являются комплексными, когда или входные параметры или коэффициенты являются комплексными.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.