文档

dsp。C我CDecimator System object

使用级联积分器梳状(CIC)滤波器抽取信号

描述

dsp。C我CDecimator系统对象™使用级联积分器梳(CIC)抽取滤波器抽取输入信号。CIC抽取滤波器的结构由N分段级联积分器,接着是一个速率变化因子R,紧随其后的是N级联梳状过滤器的截面。有关详细信息,请参见算法.的NumSections属性指定N, CIC过滤器中的节数。的DecimationFactor属性指定R,抽取因子。的getFixedPointInfo函数返回不动点段的字长和分数长度,以及dsp。C我CDecimator系统对象。方法也可以为这个System对象生成HDL代码generatehdl函数。

请注意

此对象需要定点设计器™许可证。

用CIC滤波器去除信号:

  1. 创建dsp。CICDecimatorobject而且set its properties.

  2. 调用带有参数的对象,就像调用函数一样。

要了解更多关于System对象如何工作的信息,请参见什么是系统对象?(MATLAB)。

创建

语法

cicDecim = dsp。CICDecimator
cicDecim = dsp.CICDecimator (R, M, N)
cicDecim = dsp.CICDecimator(名称、值)

描述

例子

cicDecim= dsp。C我CDecimator创建一个CIC抽取系统对象,该对象将CIC抽取滤波器应用于输入信号。

例子

cicDecim= dsp。C我CDecimator(RN创建一个CIC抽取对象DecimationFactor属性设置为R,DifferentialDelay属性设置为,NumSections属性设置为N

cicDecim= dsp。C我CDecimator(名称,值创建一个CIC抽取对象,其中每个指定属性设置为指定值。将每个属性名用单引号括起来。您可以将此语法与以前的任何输入参数组合一起使用。

属性

全部展开

除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放函数打开它们。

如果属性是可调,您可以随时更改其值。

有关更改属性值的更多信息,请参见在MATLAB中使用系统对象设计系统(MATLAB)。

输入信号的十进制因数,指定为正整数。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

在过滤器的每个梳状段中使用的差分延迟值,指定为正整数。有关详细信息,请参见算法.如果差分延迟是内置整数数据类型,则抽取因子必须是相同的整数数据类型或.例如,如果差分延迟是int8,那么抽取因子一定是int8

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

CIC过滤器的积分器和梳分器段数,指定为正整数。这个数字表示滤波器的梳状部分或积分器部分的节数。CIC过滤器中的总区段数是此属性所给出的区段数的两倍。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

定点属性名称,指定为以下之一:

用于每个筛选器部分的定点字长度,指定为标量或整数的行向量。单词长度必须大于或等于2。如果指定一个标量,则该值应用于筛选器的所有部分。如果指定一个向量,则该向量的长度必须为2 ×NumSections

例子:32

例子:[32 32 32 32 32]

依赖关系

属性时应用此属性FixedPointDataType财产“指定单词长度”'指定单词和分数长度'

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

用于每个过滤器部分的定点分数长度,指定为整数的标量或行向量。分数长度可以是负的、0的或正的。如果指定一个标量,则该值应用于筛选器的所有部分。如果指定一个向量,则该向量的长度必须为2 ×NumSections

例子:-2

例子:[-2 0 5 8]

依赖关系

属性时应用此属性FixedPointDataType财产'指定单词和分数长度'

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

用于过滤器输出的定点字长度,指定为大于或等于2的标量整数。

依赖关系

属性时应用此属性FixedPointDataType财产“最小节字长度”“指定单词长度”,或'指定单词和分数长度'

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

用于过滤器输出的定点分数长度,指定为标量整数。

依赖关系

设置时应用此属性FixedPointDataType财产'指定单词和分数长度'

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

使用

对于R2016b之前的版本,请使用一步函数来运行System对象™算法。的参数一步是您创建的对象,后面跟着本节中显示的参数。

例如,y =步骤(obj, x)而且y = obj (x)执行相同操作。

语法

cicDecimOut = cicDecim(输入)

描述

例子

cicDecimOut= cicDecim (输入使用CIC decimator对输入进行decimator。

输入参数

全部展开

数据输入,指定为向量或矩阵。输入中的行数必须是DecimationFactor.如果输入是数据类型、与定点数据类型相关的属性设置将被忽略。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|fi
复数的支持:万博1manbetx是的

输出参数

全部展开

抽取输出,作为向量或矩阵返回。输出帧大小等于(1∕1DecimationFactor) ×输入帧大小。输出数据的复杂度与输入数据的复杂度相匹配。如果输入是,输出数据类型与输入数据类型匹配。

如果输入是内置整数数据类型或定点数据类型,则输出字长度和分数长度取决于通过FixedPointDataType财产。

完整的精度

FixedPointDataType被设置为“充分精确”时,应用如下关系:

W l 输出 W l 输入 + N u 年代 e c t F l 输出 F l 输入

在那里,

  • 输出——输出数据的字长。

  • FL输出——输出数据的部分长度。

  • 输入——输入数据的字长。

  • FL输入——输入数据的分段长度。

  • NumSect——在CIC过滤器中指定的区段数NumSections财产。

输入而且FL输入继承自传递给对象算法的数据输入。对于内置整数输入,分数长度为0。

最小节字长

FixedPointDataType属性设置为“最小节字长度”,则输出字长度为您在OutputWordLength财产。输出分数长度,FL输出,由:

F l 输出 W l 输出 W l 输入 F l 输入 + N u 年代 e c t

指定字和分数的长度

FixedPointDataType属性设置为'指定单词和分数长度'时,输出字长度和分数长度为您在OutputWordLength而且OutputFractionLength属性。

指定字的长度

FixedPointDataType属性设置为“指定单词长度”,则输出字长度为您在OutputWordLength财产。输出分数长度,FL输出,由:

F l 输出 W l 输出 W l 输入 F l 输入 + N u 年代 e c t

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|fi
复数的支持:万博1manbetx是的

对象的功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放名为obj,使用以下语法:

发行版(obj)

全部展开

generatehdl 生成量化DSP滤波器的HDL代码(需要filter Design HDL Coder)
impz 离散时间滤波器的脉冲响应系统对象
freqz 滤波器的频率响应
phasez 滤波器的未包裹相位响应
fvtool 可视化DSP滤波器的频率响应
获得 CIC滤波器增益
getFixedPointInfo 得到定点字和分数长度
信息 信息过滤
一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 重置系统对象的内部状态

要获得此对象支持的筛选器分析方法的列表,请键入万博1manbetxdsp.CICDecimator.helpFilterAnalysis在MATLAB®命令提示符。有关相应的函数参考页面,请参见过滤系统对象的分析方法

例子

全部展开

请注意:如果您使用的是R2016a或更早的版本,请用等效的步骤语法替换对对象的每次调用。例如,obj (x)就变成了步骤(obj, x)

创建一个dsp。C我CDecimator系统对象™DecimationFactor设置为4。将一个信号从44.1 kHz抽取到11.025 kHz。

cicdec = dsp.CICDecimator (4);cicdec。FixedPointDataType =“最小节字长度”;cicdec。OutputWordLength = 16;

创建一个1024个采样的定点正弦输入信号,采样频率为44.13 Hz。

Fs = 44.1 e3;n =(0:1023)”;% 0.0232秒信号x = fi(罪(2 * pi * 1 e3 / Fs * n),真的,16日15);

创建一个dsp。年代ignalSource对象。

src = dsp.SignalSource (x, 64);

每帧用16个样本抽取输出。

y = 0(16日16);Ii = 1:16 y(Ii,:) = cicdec(src());结束

画出原始信号和decimated信号的第一帧。输出延迟为2个样本。

gainCIC =...(cicdec.DecimationFactor * cicdec.DifferentialDelay) ^ cicdec.NumSections;茎(n (56) / Fs、双(x (4:59)));茎(n(一14)/ (Fs / cicdec.DecimationFactor)双(y(1, 3:结束))/ gainCIC,“r”“填充”)包含(的时间(秒)) ylabel (信号幅度的)传说(原始信号的“摧毁信号”“位置”“北”)举行

使用信息方法“长”格式化,得到定点过滤段的字长和分数长度以及过滤输出。

信息(cicdec“长”
ans = '离散冷杉多重速率的过滤器(真实 ) ----------------------------------------- 滤波器结构:级联Integrator-Comb杀害多人者大量毁灭因素:4微分延迟:1的部分:2稳定:是的线性相位:是的(1型)实施成本数量的乘数:0条数量:4的状态数:4乘法/输入样本:0添加/输入样本:2.5定点信息部分单词长度:20 19 19 18节部分长度:15 14 14 13输出字长:16输出分数长:11 '

使用getFixedPointInfo函数,可以确定不动点段的字长度和分数长度以及的输出dsp。C我CDecimator而且dsp。C我C我nterpolator系统对象。筛选器部分和输出的数据类型取决于FixedPointDataType属性的过滤器系统对象™。

完整的精度

创建一个dsp。C我CDecimator对象。的默认值NumSections房地产是2。这个值表示有两个积分器和梳段。返回的WLs和FLs向量getFixedPointInfo函数各包含五个元素。前两个元素表示两个积分器部分。第三和第四个元素代表两个梳段。最后一个元素表示筛选器输出。

蔡先生= dsp。C我CDecimator
蔡先生= dsp。C我CDecimator with properties: DecimationFactor: 2 DifferentialDelay: 1 NumSections: 2 FixedPointDataType: 'Full precision'

默认情况下,FixedPointDataType属性设置为“精确”。调用getFixedPointInfo函数在此对象上使用输入数值类型,元,生成以下字长和分数长度向量。

元= numerictype(15) 1日16日
nt = DataTypeMode:定点:二进制点缩放signness: Signed WordLength: 16 FractionLength: 15
(WLs FLs的]= getFixedPointInfo(蔡先生,nt)% #好吧
WLs =1×518 18 18 18 18 18 18
FLs的=1×515 15 15 15 15 15

有关如何计算单词长度和分数长度的详细信息,请参见描述输出参数

如果你锁定蔡先生对象通过向其算法传递输入,则不需要传递nt参数getFixedPointInfo函数。

1)输入= int64 (randn(8日)
输入=8x1 int64列向量1 2 -2 1 0 -1 0 0
=蔡先生输出(输入)
output = 0 1 3 0 DataTypeMode: Fixed-point: binary -point scaling signiness: Signed WordLength: 66 FractionLength: 0 . DataTypeMode: Fixed-point: binary -point scale
(WLs FLs的]= getFixedPointInfo蔡先生)% #好吧
WLs =1×566 66 66 66 66 66 66
FLs的=1×50 0 0 0 0 0

输出和节字长是输入字长之和,在本例中为64,节数为2。输出和分段长度为0,因为输入是一个内置整数。

最小节字长

释放对象并更改FixedPointDataType财产“最小节字长度”.当输入为定点数据时,确定截面和输出定点信息,2) fi (randn(8日,1,24日15)。

释放(蔡先生);蔡先生。FixedPointDataType =“最小节字长度”
蔡先生= dsp。C我CDecimator with properties: DecimationFactor: 2 DifferentialDelay: 1 NumSections: 2 FixedPointDataType: 'Minimum section word lengths' OutputWordLength: 32
inputF = fi (randn(8, 2), 1, 24日15)
inputF = 3.5784 -0.1241 2.7694 1.4897 -1.3499 1.4090 1.4172 0.7254 0.6715 -0.0630 -1.2075 0.7148 0.7172 -0.2050 1.6302 DataTypeMode: Fixed-point: binary point scaling sign度:Signed WordLength: 24 FractionLength: 15
[WLs, FLs] = getFixedPointInfo(cicD,numerictype(inputF))% #好吧
WLs =1×526 26 26 26 32
FLs的=1×515 15 15 15 21

指定字和分数的长度

改变FixedPointDataType财产'指定单词和分数长度'.方法确定不动点信息getFixedPointInfo函数。

蔡先生。FixedPointDataType ='指定单词和分数长度'
蔡先生= dsp。C我CDecimator with properties: DecimationFactor: 2 DifferentialDelay: 1 NumSections: 2 FixedPointDataType: 'Specify word and fraction lengths' SectionWordLengths: [16 16 16 16] SectionFractionLengths: 0 OutputWordLength: 32 OutputFractionLength: 0
[WLs, FLs] = getFixedPointInfo(cicD,numerictype(inputF))% #好吧
WLs =1×516 16 16 16 32
FLs的=1×50 0 0 0 0 0

的各自不动点属性来分配节和输出字长度和分数长度蔡先生对象。这些值不是由输入数字类型决定的。要确认,请拨打getFixedPointInfo函数而不传递numerictype输入参数。

[WLs, FLs] = getFixedPointInfo(cicD)% #好吧
WLs =1×516 16 16 16 32
FLs的=1×50 0 0 0 0 0

指定字的长度

要指定筛选器部分和输出的字长度,请设置FixedPointDataType财产“指定单词长度”。

蔡先生。FixedPointDataType =“指定单词长度”
蔡先生= dsp。C我CDecimator with properties: DecimationFactor: 2 DifferentialDelay: 1 NumSections: 2 FixedPointDataType: 'Specify word lengths' SectionWordLengths: [16 16 16 16] OutputWordLength: 32

getFixedPointInfo函数需要输入数字类型,因为该信息用于计算节和字分数长度。

[WLs, FLs] = getFixedPointInfo(cicD,numerictype(inputF))
WLs =1×516 16 16 16 32
FLs的=1×55 5 5 5 21

有关该函数如何计算单词和分数长度的详细信息,请参见描述输出参数

更多关于

全部展开

算法

全部展开

参考文献

[1] Hogenauer, E.B.一种用于抽取和插值的经济型数字滤波器。IEEE声学,语音和信号处理汇刊。第29卷第2期,1981年,155-162。

现场可编程门阵列的数字信号处理。纽约:施普林格,2001。

通信系统的多速率信号处理。印第安纳波利斯:Prentice Hall PTR, 2004。

扩展功能

介绍了R2012a

这个话题有帮助吗?