无限脉冲响应(IIR)滤波器
的dsp.IIRFilter
系统对象™滤波器使用指定的滤波器对输入的每个信道。您可以指定过滤器有“我直接形式”
,'直接形式I转置'
,“直接形成二世”
,或‘直接形式II转置’
结构。
使用分子和分母指定过滤器分子和分母系数的属性。除这些系数外,还可以通过InitialConditions财产。
使用IIR滤波器来过滤信号:
创建dsp.IIRFilter
对象并设置其属性。
使用参数调用对象,就好像它是一个函数一样。
有关系统对象如何工作的更多信息,请参见什么是系统对象?(MATLAB)。
除非另有说明,性质nontunable,这意味着调用对象后,你不能改变它们的值。对象锁,当你打电话给他们,和释放
函数打开它们。
如果属性可调,您可以随时更改它的值。
有关更改属性值的更多信息,请参见系统设计在MATLAB中使用系统对象(MATLAB)。
结构
- - - - - -IIR滤波器结构‘直接形式II转置’
(默认)|“我直接形式”
|'直接形式I转置'
|“直接形成二世”
IIR滤波器结构,指定为“我直接形式”
,'直接形式I转置'
,“直接形成二世”
,或‘直接形式II转置’
。
分子
- - - - - -分子系数[1]
(默认)|行向量用行向量表示的分子系数。
例:(0.0296 0.1775 0.4438 0.5918 0.4438 0.1775 0.0296
]
可调:是的
数据类型:单
|双
|int8
|INT16
|INT32
|Int64的
|uint8
|UINT16
|uint32
|uint64
复数的支持:金宝app是的
分母
- - - - - -分母系数0.1 [1]
(默认)|行向量分母系数,指定为行向量。
例:(1.0000 -0.0000 0.7777 -0.0000 0.1142 -0.0000 0.0018
]
可调:是的
数据类型:单
|双
|int8
|INT16
|INT32
|Int64的
|uint8
|UINT16
|uint32
|uint64
复数的支持:金宝app是的
InitialConditions
- - - - - -初始状态0
(默认)|标量|向量|矩阵滤波状态的初始条件,指定为下列条件之一:
标量 - 对象初始化在过滤器的所有延迟元件到标量值。
向量——向量的长度等于滤波器中延迟元素的数量。每个向量元素为相应的延迟元素指定一个唯一的初始条件。该对象对输入信号的每个通道应用相同的向量。
矩阵——矩阵中的行数必须等于滤波器中的延迟元素数。矩阵的列数必须等于输入的通道数。每个元素在对应的信道中为对应的延迟元素指定一个唯一的初始条件。
滤波器状态数等于max(N,米) - 1,其中N是极点的个数,和米是0的个数。
可调:是的
属性时,此属性仅应用于结构财产“直接形成二世”
或‘直接形式II转置’
。
数据类型:单
|双
|int8
|INT16
|INT32
|Int64的
|uint8
|UINT16
|uint32
|uint64
复数的支持:金宝app是的
NumeratorInitialConditions
- - - - - -上侧的零初始条件0
(默认)|标量|向量|矩阵滤波器状态的初始条件在带零点的滤波器结构一侧,具体如下:
标量 - 对象初始化在过滤器上的零侧的所有延迟元件到标量值。
向量——向量的长度等于滤波器中零点的延迟元素的数量。每个向量元素为零侧对应的延迟元素指定一个唯一的初始条件。该对象对输入信号的每个通道应用相同的初始条件向量。
矩阵——矩阵中的行数必须等于滤波器中零点上的延迟元素数。矩阵中的列数必须等于输入信号中的通道数。每个元素为对应信道中零点侧对应的延迟元素指定一个唯一的初始条件。
滤波器状态数等于max(N,米) - 1,其中N是极点的个数,和米分别是0的个数。
可调:是的
属性时,此属性仅应用于结构财产“我直接形式”
或'直接形式I转置'
。
数据类型:单
|双
|int8
|INT16
|INT32
|Int64的
|uint8
|UINT16
|uint32
|uint64
复数的支持:金宝app是的
DenominatorInitialConditions
- - - - - -对极侧的初始条件0
(默认)|标量|向量|矩阵滤波器状态的初始条件在带极点的滤波器结构一侧,具体如下:
标量——对象将筛选器中极点上的所有延迟元素初始化为标量值。
向量——向量的长度等于滤波器极点上的延迟元素的数量。每个向量元素为极点上对应的延迟元素指定一个唯一的初始条件。该对象对输入信号的每个通道应用相同的初始条件向量。
矩阵——矩阵中的行数必须等于滤波器中极点的延迟元素数。矩阵中的列数必须等于输入信号中的通道数。每个元素为对应信道中极点侧对应的延迟元素指定一个唯一的初始条件。
滤波器状态数等于max(N,米) - 1,其中N是极点的个数,和米分别是0的个数。
可调:是的
属性时,此属性仅应用于结构财产“我直接形式”
或'直接形式I转置'
。
数据类型:单
|双
|int8
|INT16
|INT32
|Int64的
|uint8
|UINT16
|uint32
|uint64
复数的支持:金宝app是的
RoundingMethod
- - - - - -舍入方法“地板”
(默认)|'天花板'
|“收敛”
|“最近”
|“圆”
|“简单”
|“零”
选择舍入模式为定点操作。
OverflowAction
- - - - - -溢出的行动“包装”
(默认)|“饱和磁”
StateDataType
- - - - - -状态数据类型同样作为输入的
(默认)|“自定义”
状态数据类型,指定为下列之一:
同样作为输入的
- 该状态数据类型是与输入相同的数据类型。
“自定义”
- 状态输出数据类型是一种autosigned数字类型通过CustomStateDataType财产。
CustomStateDataType
- - - - - -状态字和分数长度numerictype([], 16岁,15)
(默认)NumeratorCoefficientsDataType
- - - - - -分子系数的数据类型“与输入相同的单词长度”
(默认)|“自定义”
数据类型的分子系数,指定为下列之一:
“与输入相同的单词长度”
- 分子系数的字长是相同的输入字长度。分数长度被选择以得到最佳可能的精确度。
“自定义”
——分子系数的数据类型是由。指定的自签名数字类型CustomNumeratorCoefficientsDataType财产。
CustomNumeratorCoefficientsDataType
- - - - - -分子系数的单词和分数长度numerictype([], 16岁,15)
(默认)DenominatorCoefficientsDataType
- - - - - -分母系数的数据类型“与输入相同的单词长度”
(默认)|“自定义”
分母系数的数据类型,具体如下:
“与输入相同的单词长度”
- 分母系数的字长是相同的输入字的长度。分数长度被选择以得到最佳可能的精确度。
“自定义”
- 分母系数的数据类型的数字autosigned类型由指定的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滤波器的分子多项式中,累加运算输出的数据类型,具体如下:
“完全精确”
——该对象使用全精度规则计算分子累加器数据类型。这些规则提供了最精确的定点数字。没有发生量子化。根据需要添加位,以确保不发生舍入或溢出。
同样作为输入的
——accumulator数据类型与输入数据类型相同。
“同品”
- 累加器数据类型是一样的产品输出的数据类型。
“自定义”
——accumulator数据类型是由。指定的自定义数值类型CustomNumeratorAccumulatorDataType财产。属性指定舍入方法和溢出操作RoundingMethod和OverflowAction属性。
CustomNumeratorAccumulatorDataType
- - - - - -分子累加器字和分数长度numerictype([], 32岁,30)
(默认)DenominatorAccumulatorDataType
- - - - - -分母累加器的数据类型“完全精确”
(默认)|同样作为输入的
|“同品”
|“自定义”
在IIR滤波器的分母多项式的累积操作的输出,指定为以下中的一个的数据类型:
“完全精确”
——该对象使用全精度规则计算分母累加器数据类型。这些规则提供了最精确的定点数字。没有发生量子化。根据需要添加位,以确保不发生舍入或溢出。
同样作为输入的
——accumulator数据类型与输入数据类型相同。
“同品”
- 累加器数据类型是一样的产品输出的数据类型。
“自定义”
——accumulator数据类型是由。指定的自定义数值类型CustomDenominatorAccumulatorDataType财产。属性指定舍入方法和溢出操作RoundingMethod和OverflowAction属性。
CustomDenominatorAccumulatorDataType
- - - - - -分母累加字和分数长度numerictype([], 32岁,30)
(默认)OutputDataType
- - - - - -输出数据类型同样作为输入的
(默认)|“完全精确”
|“自定义”
的输出的数据类型dsp.IIRFilter
对象,指定为以下情况之一:
同样作为输入的
——输出数据类型与输入数据类型相同。
“完全精确”
- 对象计算使用全精度规则的输出的数据类型。这些规则提供了最精确的定点数字。没有发生量子化。根据需要添加位,以确保不发生舍入或溢出。
“自定义”
——输出数据类型是由。指定的自定义数值类型CustomOutputDataType财产。属性指定舍入方法和溢出操作RoundingMethod和OverflowAction属性。
CustomOutputDataType
- - - - - -输出字和分数长度numerictype([], 16岁,15)
(默认)MultiplicandDataType
- - - - - -被乘数数据类型同样作为输入的
(默认)|“自定义”
被指定为下列数据类型之一的乘法和数据类型:
同样作为输入的
——multiplicand数据类型与输入数据类型相同。
“自定义”
方法指定的自动签名数字类型CustomMultiplicandDataType财产。
CustomMultiplicandDataType
- - - - - -乘法输出字和分数长度numerictype([], 16岁,15)
(默认)输入
- - - - - -数据输入经过筛选的数据输入,指定为向量或矩阵。
例:randn(34,24)
数据类型:单
|双
|int8
|INT16
|INT32
|Int64的
|fi
复数的支持:金宝app是的
iirOut
——过滤输出滤波后的输出,返回作为向量或矩阵。的大小,数据类型和outpout匹配该输入的复杂性。
数据类型:单
|双
|int8
|INT16
|INT32
|Int64的
|fi
复数的支持:金宝app是的
要使用对象函数,请将系统对象指定为第一个输入参数。例如,释放系统对象的系统资源obj
,使用此语法:
发行版(obj)
对于此对象支持的筛选器分析方法列表,请键入金宝appdsp.IIRFilter.helpFilterAnalysis
在MATLAB®命令提示符。有关相应的功能参考页面,请参阅过滤器系统对象的分析方法。
使用低通巴特沃斯IIR滤波器对噪声正弦信号进行滤波。
请注意:如果您正在使用R2016a或更早的版本,请使用等效的步骤语法替换对对象的每个调用。例如,obj (x)
就变成了步骤(obj, x)
。
输入信号
输入信号有三个音调,1 kHz, 5 kHz和12 kHz。
Sine1 = dsp.SineWave (“频率”,1E3,“SampleRate”44.1 e3);Sine2 = dsp.SineWave (“频率”5 e3,“SampleRate”44.1 e3);Sine3 = dsp.SineWave (“频率”,12e3,“SampleRate”44.1 e3);
滤波器的设计
使用牛油
功能,以设计一个十阶低通巴特沃思过滤器。
N = 10;Fc = 0.4;[b] =黄油(N, Fc);
创建一个dsp.IIRFilter
对象,并分配所设计的系数提供给分子
和分母
属性。
iir = dsp.IIRFilter (“分子”b“分母”,);
查看滤波器的幅度响应。截止频率为0.4 rad/sample,其采样率为44.1 kHz 或8.82 kHz。
fvtool(信息检索,'FS',Sine1.SampleRate)
的输入和输出信号的功率谱频谱分析仪
。
sa = dsp.SpectrumAnalyzer (“SampleRate”,Sine1.SampleRate,“NumInputPorts”,2,...'PlotAsTwoSidedSpectrum'假的,...“OverlapPercent”,80,“PowerUnits”,“瓦分贝”,...“YLimits”,[ - 220 -10]);
流媒体
加入零均值高斯白噪声的0.01至正弦波的总和的标准偏差。过滤器使用IIR滤波器的信号。
1千赫和5千赫的音调不受影响,因为它们属于通频带。在12千赫的频率是衰减的,因为它落在过渡带的过滤器。
为i = 1:1000输入= Sine1()+Sine2()+Sine3()+0.01*randn(Sine1. samplesperframe,1);输出= iir(输入);sa(输入、输出)结束
设计具有8个槽口一个开槽梳状滤波器,并参照一个-3分贝水平的0.02的陷波带宽。
创建一个梳子
过滤器设计规范对象使用fdesign.comb
功能,并指定这些设计参数。
combSpecs = fdesign.comb (“缺口”,“N, BW”8,0.02);
设计的缺口梳状滤波器使用设计
功能。将所得的过滤器是dsp.IIRFilter
系统对象™。有关如何在流数据上应用此筛选器的详细信息,请参阅dsp.IIRFilter
。
iirFilt =设计(combSpecs,“Systemobject”,真正的)
iirFilt = dsp。分子:[0.8878 0 0 0 0 0 0 0 0 0 0 -0.8878]分母:[1 0 0 0 0 0 0 0 0 0 -0.7757]初始条件:0显示所有属性
利用所设计的滤波器观察幅值响应fvtool
。
fvtool(iirFilt)
使用注意事项和限制:
只有分子
和分母
属性可调用于代码生成。
看到系统对象在MATLAB中的代码生成(MATLAB编码器)。
的dsp.IIRFilter
系统对象支持以下筛选器结构。金宝app每个部分中的图表显示了用于定点信号的过滤器结构中的数据类型。可以使用对象的定点属性设置数据类型。
时应用下列约束结构
属性设置为“我直接形式”
:
输入可以是真实的,也可以是复杂的。
分子和分母系数可以是实数或复数。
分子和分母系数必须具有相同的复杂性特征。当分子和分母的系数具有不同的复杂性时,对象就像提供了两组复系数一样处理过滤器。实值系数集被认为是一个具有零值虚部的复向量。
无法为此结构指定状态数据类型。这样做是不可能的,因为输入和输出状态具有与输入和输出缓冲区相同的数据类型。
时应用下列约束结构
属性设置为'直接形式I转置'
:
输入可以是真实的,也可以是复杂的。
分子和分母系数可以是实数或复数。
分子和分母系数必须具有相同的复杂性特征。当分子和分母的系数具有不同的复杂性时,对象就像提供了两组复系数一样处理过滤器。实值系数集被认为是一个具有零值虚部的复向量。
美国是复杂的时,无论是输入或系数是复数。
时应用下列约束结构
属性设置为“直接形成二世”
:
输入可以是真实的,也可以是复杂的。
分子和分母系数可以是实数或复数。
分子和分母系数必须具有相同的复杂性特征。当分子和分母的系数具有不同的复杂性时,对象就像提供了两组复系数一样处理过滤器。实值系数集被认为是一个具有零值虚部的复向量。
当输入或系数是复数时,状态是复数。
时应用下列约束结构
属性设置为‘直接形式II转置’
:
输入可以是真实的,也可以是复杂的。
分子和分母系数可以是实数或复数。
分子和分母系数必须具有相同的复杂性特征。当分子和分母的系数具有不同的复杂性时,对象就像提供了两组复系数一样处理过滤器。实值系数集被认为是一个具有零值虚部的复向量。
当输入或系数是复数时,状态是复数。
你点击了一个链接,对应于这个MATLAB命令:
在MATLAB命令窗口中输入它运行的命令。Web浏览器不支持MATLAB的命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文),以获得最佳的网站表现。其他MathWorks国家站点没有针对您所在位置的访问进行优化。