dsp。IIRFilter
无限脉冲响应(IIR)滤波器
描述
的dsp。IIRFilter
系统对象™使用指定的过滤器过滤输入的每个通道。您可以指定筛选器具有直接形式I
,"直接形式我转置了"
,“直接形式II”
,或“直接形式II的转置”
结构。
使用分子而且分母属性指定过滤器分子系数和分母系数的系数。属性指定非零的初始滤波器状态InitialConditions财产。
使用IIR滤波器对信号进行滤波:
创建
dsp。IIRFilter
对象并设置其属性。使用参数调用对象,就像调用函数一样。
有关系统对象如何工作的详细信息,请参见什么是系统对象?
创建
属性
除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放
功能解锁它们。
如果属性为可调,您可以随时更改其值。
有关更改属性值的详细信息,请参见使用系统对象的MATLAB系统设计.
结构
- - - - - -IIR滤波器结构
“直接形式II的转置”
(默认)|直接形式I
|"直接形式我转置了"
|“直接形式II”
IIR滤波器结构,指定为直接形式I
,"直接形式我转置了"
,“直接形式II”
,或“直接形式II的转置”
.
分子
- - - - - -分子系数
[1]
(默认)|行向量
分子系数,用行向量表示。
例子:[0.0296 0.1775 0.4438 0.5918 0.4438 0.1775 0.0296
]
可调:是的
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
复数支持:万博1manbetx是的
分母
- - - - - -分母系数
0.1 [1]
(默认)|行向量
分母系数,用行向量表示。前面分母的系数必须相等1
.
例子:[1.0000 -0.0000 0.7777 -0.0000 0.1142 -0.0000 0.0018
]
可调:是的
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
复数支持:万博1manbetx是的
InitialConditions
- - - - - -初始条件
0
(默认)|标量|向量|矩阵
过滤器状态的初始条件,指定为以下之一:
scalar——对象将过滤器中的所有延迟元素初始化为标量值。
vector——vector的长度等于过滤器中延迟元素的数量。每个向量元素为相应的延迟元素指定一个唯一的初始条件。对象对输入信号的每个通道应用相同的向量。
matrix——矩阵中的行数必须等于过滤器中的延迟元素的数量。矩阵中的列数必须等于输入中的通道数。每个元素为相应通道中的相应延迟元素指定唯一的初始条件。
过滤器状态的数量等于max(N,米) - 1,其中N是极点的数目,和米是0的个数。
可调:是的
依赖关系
属性时才应用此属性结构财产“直接形式II”
或“直接形式II的转置”
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
复数支持:万博1manbetx是的
NumeratorInitialConditions
- - - - - -0边的初始条件
0
(默认)|标量|向量|矩阵
滤波器状态的初始条件在带有零的滤波器结构的一侧,指定为以下之一:
scalar——该对象将过滤器中0端所有的延迟元素初始化为标量值。
vector——vector的长度等于过滤器中0端延迟元素的数量。每个矢量元素为零端对应的延迟元素指定一个唯一的初始条件。该对象对输入信号的每个通道应用相同的初始条件向量。
matrix——矩阵中的行数必须等于过滤器中0端延迟元素的数量。矩阵中的列数必须等于输入信号中的通道数。每个元素为相应通道中零侧的相应延迟元素指定唯一的初始条件。
过滤器状态的数量等于max(N,米) - 1,其中N是极点的数目,和米分别是0的个数。
可调:是的
依赖关系
属性时才应用此属性结构财产直接形式I
或"直接形式我转置了"
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
复数支持:万博1manbetx是的
DenominatorInitialConditions
- - - - - -极点侧的初始条件
0
(默认)|标量|向量|矩阵
滤波器状态的初始条件在具有极点的滤波器结构的一侧,指定为以下之一:
scalar——该对象将过滤器中极点端的所有延迟元素初始化为标量值。
vector——向量的长度等于滤波器中极点端延迟元素的数量。每个矢量元素为极点一侧的相应延迟元素指定了唯一的初始条件。该对象对输入信号的每个通道应用相同的初始条件向量。
矩阵——矩阵中的行数必须等于滤波器中极点端延迟元素的数量。矩阵中的列数必须等于输入信号中的通道数。每个元件为相应信道中极点一侧的相应延迟元件指定一个唯一的初始条件。
过滤器状态的数量等于max(N,米) - 1,其中N是极点的数目,和米分别是0的个数。
可调:是的
依赖关系
属性时才应用此属性结构财产直接形式I
或"直接形式我转置了"
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
复数支持:万博1manbetx是的
RoundingMethod
- - - - - -舍入方法
“地板”
(默认)|“天花板”
|“收敛”
|“最近的”
|“圆”
|“简单”
|“零”
选择舍入模式用于定点运算。
OverflowAction
- - - - - -溢出的行动
“包装”
(默认)|“饱和”
StateDataType
- - - - - -状态数据类型
“与输入相同”
(默认)|“自定义”
状态数据类型,指定为以下之一:
“与输入相同”
状态数据类型与输入数据类型相同。“自定义”
属性的自签名数字类型CustomStateDataType财产。
CustomStateDataType
- - - - - -陈述单词和分数的长度
numerictype([], 16岁,15)
(默认)
NumeratorCoefficientsDataType
- - - - - -分子系数的数据类型
“与输入字长相同”
(默认)|“自定义”
分子系数的数据类型,指定为以下之一:
“与输入字长相同”
——分子系数的字长与输入字长相同。分数长度的选择是为了提供最好的精度。“自定义”
属性指定的自签名数字类型CustomNumeratorCoefficientsDataType财产。
CustomNumeratorCoefficientsDataType
- - - - - -分子系数的字和分数长度
numerictype([], 16岁,15)
(默认)
DenominatorCoefficientsDataType
- - - - - -分母系数的数据类型
“与输入字长相同”
(默认)|“自定义”
分母系数的数据类型,指定为以下之一:
“与输入字长相同”
——分母系数的字长与输入字长相同。分数长度的选择是为了提供最好的精度。“自定义”
属性指定的自签名数字类型CustomDenominatorCoefficientsDataType财产。
CustomDenominatorCoefficientsDataType
- - - - - -分母系数的字和分数长度
numerictype([], 16岁,15)
(默认)
NumeratorProductDataType
- - - - - -分子乘积数据类型
“充分精确”
(默认)|“与输入相同”
|“自定义”
IIR滤波器分子多项式中乘积运算输出的数据类型,指定为以下之一:
“充分精确”
对象使用全精度规则计算分子乘积输出数据类型。这些规则提供了最精确的定点数字。没有量子化发生。根据需要添加位,以确保不会发生舍入或溢出。“与输入相同”
—产品输出数据类型与输入数据类型相同。“自定义”
类指定的自定义数字类型CustomNumeratorProductDataType财产。方法指定舍入方法和溢出动作RoundingMethod而且OverflowAction属性。
CustomNumeratorProductDataType
- - - - - -分子积字和分数长度
numerictype([], 32岁,30)
(默认)
DenominatorProductDataType
- - - - - -分母产品数据类型
“充分精确”
(默认)|“与输入相同”
|“自定义”
IIR滤波器分母多项式中乘积运算输出的数据类型,指定为以下之一:
“充分精确”
对象使用全精度规则计算分母乘积输出数据类型。这些规则提供了最精确的定点数字。没有量子化发生。根据需要添加位,以确保不会发生舍入或溢出。“与输入相同”
—产品输出数据类型与输入数据类型相同。“自定义”
类指定的自定义数字类型CustomDenominatorProductDataType财产。方法指定舍入方法和溢出动作RoundingMethod而且OverflowAction属性。
CustomDenominatorProductDataType
- - - - - -分母积字和分数长度
numerictype([], 32岁,30)
(默认)
NumeratorAccumulatorDataType
- - - - - -分子累加器数据类型
“充分精确”
(默认)|“与输入相同”
|“与产品相同”
|“自定义”
IIR滤波器分子多项式中累积操作输出的数据类型,指定为以下之一:
“充分精确”
对象使用全精度规则计算分子累加器数据类型。这些规则提供了最精确的定点数字。没有量子化发生。根据需要添加位,以确保不会发生舍入或溢出。“与输入相同”
—累加器数据类型与输入数据类型相同。“与产品相同”
—累加器数据类型与产品输出数据类型相同。“自定义”
类指定的自定义数字类型CustomNumeratorAccumulatorDataType财产。方法指定舍入方法和溢出动作RoundingMethod而且OverflowAction属性。
CustomNumeratorAccumulatorDataType
- - - - - -分子累加字和分数长度
numerictype([], 32岁,30)
(默认)
DenominatorAccumulatorDataType
- - - - - -分母累加器数据类型
“充分精确”
(默认)|“与输入相同”
|“与产品相同”
|“自定义”
IIR滤波器分母多项式的累积操作输出的数据类型,指定为以下之一:
“充分精确”
对象使用全精度规则计算分母累加器数据类型。这些规则提供了最精确的定点数字。没有量子化发生。根据需要添加位,以确保不会发生舍入或溢出。“与输入相同”
—累加器数据类型与输入数据类型相同。“与产品相同”
—累加器数据类型与产品输出数据类型相同。“自定义”
类指定的自定义数字类型CustomDenominatorAccumulatorDataType财产。方法指定舍入方法和溢出动作RoundingMethod而且OverflowAction属性。
CustomDenominatorAccumulatorDataType
- - - - - -分母累加字和分数长度
numerictype([], 32岁,30)
(默认)
OutputDataType
- - - - - -输出数据类型
“与输入相同”
(默认)|“充分精确”
|“自定义”
类型的输出的数据类型dsp。IIRFilter
对象,指定为下列之一:
“与输入相同”
—输出数据类型与输入数据类型相同。“充分精确”
对象使用全精度规则计算输出数据类型。这些规则提供了最精确的定点数字。没有量子化发生。根据需要添加位,以确保不会发生舍入或溢出。“自定义”
类指定的自定义数字类型CustomOutputDataType财产。方法指定舍入方法和溢出动作RoundingMethod而且OverflowAction属性。
CustomOutputDataType
- - - - - -输出字和分数长度
numerictype([], 16岁,15)
(默认)
MultiplicandDataType
- - - - - -多重数据类型
“与输入相同”
(默认)|“自定义”
乘数数据类型,指定为以下之一:
“与输入相同”
—乘数数据类型与输入数据类型相同。“自定义”
类指定的自签名数字类型CustomMultiplicandDataType财产。
CustomMultiplicandDataType
- - - - - -与输出字和分数长度相乘
numerictype([], 16岁,15)
(默认)
使用
输入参数
输入
- - - - - -数据输入
向量|矩阵
经过过滤,指定为向量或矩阵的数据输入。
例子:randn(34岁24)
数据类型:单
|双
|int8
|int16
|int32
|int64
|fi
复数支持:万博1manbetx是的
输出参数
iirOut
-过滤输出
向量|矩阵
过滤后的输出,作为向量或矩阵返回。输出的大小、数据类型和复杂性与输入相匹配。
数据类型:单
|双
|int8
|int16
|int32
|int64
|fi
复数支持:万博1manbetx是的
对象的功能
要使用对象函数,请将System对象指定为第一个输入参数。例如,释放system对象的系统资源obj
,使用这种语法:
发行版(obj)
有关此对象支持的筛选器分析方法的列表,请键入万博1manbetxdsp.IIRFilter.helpFilterAnalysis
在MATLAB中®命令提示符。有关相应的函数参考页面,请参见过滤系统对象的分析方法.
例子
用IIR滤波器对噪声信号进行滤波
使用低通巴特沃斯IIR滤波器对有噪声的正弦信号进行滤波。
请注意:如果您正在使用R2016a或更早的版本,请使用等效的步骤语法替换对对象的每个调用。例如,obj (x)
就变成了步骤(obj, x)
.
输入信号
输入信号有三个音调,1khz, 5khz和12khz。
Sine1 = dsp。SineWave (“频率”1 e3,...“SampleRate”44.1 e3);Sine2 = dsp。SineWave (“频率”5 e3,...“SampleRate”44.1 e3);Sine3 = dsp。SineWave (“频率”, 12 e3,...“SampleRate”44.1 e3);
滤波器的设计
使用黄油
函数设计了一个十阶低通巴特沃斯滤波器。
N = 10;Fc = 0.4;[b,a] =黄油(N,Fc);
创建一个dsp。IIRFilter
对象,并将设计的系数分配给分子
和分母
属性。
Iir = dsp。IIRFilter (“分子”b...“分母”,);
查看滤波器的幅值响应。截止频率为0.4 rad/sample,在44.1 kHz的采样率下,转换为 或8.82千赫。
fvtool(信息检索,“Fs”Sine1.SampleRate)
查看输入和输出信号的功率谱频谱分析仪
.
光谱分析仪(“SampleRate”, Sine1。SampleRate,...“方法”,“韦尔奇”,...“PlotAsTwoSidedSpectrum”假的,...“OverlapPercent”, 80,...“SpectrumUnits”,“瓦分贝”,...“YLimits”-10年[-220]);
流媒体
将标准差为0.01的零均值高斯白噪声加到正弦波的和中。使用IIR滤波器对信号进行滤波。
1 kHz和5 kHz的音调不受影响,因为它们落在通带中。12千赫的频率衰减,因为它落在滤波器的过渡带。
为i = 1:1000 input = Sine1()+Sine2()+Sine3()+...0.01 * randn (Sine1.SamplesPerFrame, 1);输出= iir(输入);sa(输入、输出)结束
设计一个IIR滤波器
设计一个有8个缺口的缺口梳状滤波器,缺口带宽为0.02参照-3 dB电平。
创建一个梳子
对象的过滤器设计规范fdesign.comb
功能并指定这些设计参数。
combSpecs = fdesign.comb(“缺口”,“N, BW”8, 0.02);
设计了缺口梳状滤波器设计
函数。生成的筛选器是dsp。IIRFilter
系统对象™。有关如何在流数据上应用此过滤器的详细信息,请参见dsp。IIRFilter
.
irfilt =设计(combSpecs,“Systemobject”,真正的)
iirFilt = dsp。IIRFilterwith 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)
更多关于
不动点
的dsp。IIRFilter
系统对象支持以下过滤器结构。万博1manbetx每个部分中的图表显示了用于定点信号的滤波器结构中的数据类型。可以使用对象的定点属性设置数据类型。
属性时应用以下约束结构
属性设置为直接形式I
:
输入可以是真实的,也可以是复杂的。
分子和分母系数可以是实数,也可以是复数。
分子系数和分母系数必须具有相同的复杂性特征。当分子和分母系数彼此具有不同的复杂性时,对象处理过滤器时就好像提供了两组复杂系数。实值系数集被看作是一个虚部为零的复向量。
不能为此结构指定State数据类型。这样做是不可能的,因为输入和输出状态具有与输入和输出缓冲区相同的数据类型。
属性时应用以下约束结构
属性设置为"直接形式我转置了"
:
输入可以是真实的,也可以是复杂的。
分子和分母系数可以是实数,也可以是复数。
分子系数和分母系数必须具有相同的复杂性特征。当分子和分母系数彼此具有不同的复杂性时,对象处理过滤器时就好像提供了两组复杂系数。实值系数集被看作是一个虚部为零的复向量。
当输入或系数都是复数时,状态是复数。
属性时应用以下约束结构
属性设置为“直接形式II”
:
输入可以是真实的,也可以是复杂的。
分子和分母系数可以是实数,也可以是复数。
分子系数和分母系数必须具有相同的复杂性特征。当分子和分母系数彼此具有不同的复杂性时,对象处理过滤器时就好像提供了两组复杂系数。实值系数集被看作是一个虚部为零的复向量。
当输入或系数都是复数时,状态是复数。
属性时应用以下约束结构
属性设置为“直接形式II的转置”
:
输入可以是真实的,也可以是复杂的。
分子和分母系数可以是实数,也可以是复数。
分子系数和分母系数必须具有相同的复杂性特征。当分子和分母系数彼此具有不同的复杂性时,对象处理过滤器时就好像提供了两组复杂系数。实值系数集被看作是一个虚部为零的复向量。
当输入或系数都是复数时,状态是复数。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
只有
分子
而且分母
属性可用于代码生成。看到系统对象在MATLAB代码生成(MATLAB编码器).
版本历史
在R2012b中引入
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。