dsp。C我C我nterpolator
用级联积分器梳状滤波器插值信号
描述
的dsp。C我C我nterpolator
系统对象™使用级联积分器梳(CIC)插值滤波器插值输入信号。CIC插值滤波器的结构由N段级联梳状滤波器,其次是由一个因子的速率变化R,紧随其后的是N级联积分器的部分。有关详细信息,请参见算法.的NumSections属性指定N, CIC过滤器中的节数。的InterpolationFactor属性指定R,插值因子。的getFixedPointInfo
函数返回不动点段的字长和分数长度,以及dsp。C我C我nterpolator
系统对象。方法也可以为这个System对象生成HDL代码generatehdl
函数。
请注意
此对象需要定点设计器™许可证。
用CIC滤波器插值信号:
创建
dsp。C我C我nterpolator
对象并设置其属性。调用带有参数的对象,就像调用函数一样。
要了解更多关于System对象如何工作的信息,请参见什么是系统对象?
创建
语法
属性
除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放
函数打开它们。
如果属性是可调,您可以随时更改其值。
有关更改属性值的更多信息,请参见在MATLAB中使用系统对象设计系统.
InterpolationFactor
- - - - - -插值因子
2
(默认)|正整数
用来插值输入信号的因子,指定为正整数。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
DifferentialDelay
- - - - - -滤波器梳段的差分延迟
1
(默认)|正整数
在过滤器的每个梳状段中使用的差分延迟值,指定为正整数。有关详细信息,请参见算法.如果差分延迟是内置整数类数据类型,则插值因子必须是相同的整数数据类型或双
.例如,如果差分延迟是int8
,则插值因子必须为anint8
或双
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
NumSections
- - - - - -积分器和梳段数
2
(默认)|正整数
CIC过滤器的积分器和梳分器段数,指定为正整数。这个数字表示滤波器的梳状部分或积分器部分的节数。CIC过滤器中的总区段数是此属性所给出的区段数的两倍。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
FixedPointDataType
- - - - - -定点属性名称
完整的精度
(默认)|最小节字长
|指定字的长度
|指定字和分数的长度
定点属性名称,指定为以下之一:
完整的精度
-字长度和分数长度的CIC过滤部分和对象输出在全精度操作。最小节字长
—通过命令指定输出字的长度OutputWordLength财产。该对象确定滤波器部分数据类型和输出分数长度,以提供最佳的可能精度。有关详细信息,请参见getFixedPointInfo
而且cicInterpOut
论点。指定字的长度
—指定CIC过滤段的字长和通过接口输出的对象SectionWordLengths而且OutputWordLength属性。该对象确定相应的分数长度,以提供最佳的精度。有关详细信息,请参见getFixedPointInfo
和cicInterpOut
论点。指定字和分数的长度
—指定CIC过滤段的字长、分长和通过CIC输出的对象SectionWordLengths,SectionFractionLengths,OutputWordLength,OutputFractionLength属性。
SectionWordLengths
- - - - - -每个过滤器部分的定点字长
[16 16 16 16 16]
(默认)|标量|向量
用于每个筛选器部分的定点字长度,指定为标量或整数的行向量。单词长度必须大于或等于2。如果指定一个标量,则该值应用于筛选器的所有部分。如果指定一个向量,则该向量的长度必须为2 ×NumSections
.
例子:32
例子:[32 32 32 32 32]
依赖关系
属性时应用此属性FixedPointDataType
财产“指定单词长度”
或'指定单词和分数长度'
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
SectionFractionLengths
- - - - - -每个过滤器部分的定点分数长度
0
(默认)|标量|向量
用于每个过滤器部分的定点分数长度,指定为整数的标量或行向量。分数长度可以是负的、0的或正的。如果指定一个标量,则该值应用于筛选器的所有部分。如果指定一个向量,则该向量的长度必须为2 ×NumSections
.
例子:-2
例子:[-2 0 5 8]
依赖关系
属性时应用此属性FixedPointDataType
财产'指定单词和分数长度'
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
OutputWordLength
- - - - - -滤波器输出的定点字长
32
(默认)|标量整数
用于过滤器输出的定点字长度,指定为大于或等于2的标量整数。
依赖关系
属性时应用此属性FixedPointDataType
其中一人的财产“最小节字长度”
,“指定单词长度”
,或'指定单词和分数长度'
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
OutputFractionLength
- - - - - -滤波器输出的定点分数长度
0
(默认)|标量整数
用于过滤器输出的定点分数长度,指定为标量整数。
依赖关系
属性时应用此属性FixedPointDataType
财产'指定单词和分数长度'
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
使用
描述
使用CIC插值器插值输入。cicInterpOut
= cicInterp(输入)
输入参数
输入
- - - - - -数据输入
向量|矩阵
数据输入,指定为向量或矩阵。如果输入是单数据类型或双数据类型,则忽略与定点数据类型相关的属性设置。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|fi
复数的支持:是的
输出参数
cicInterpOut
- CIC插值器输出
向量|矩阵
插值输出,作为向量或矩阵返回。输出帧大小等于(InterpolationFactor) ×输入帧大小。输出数据的复杂度与输入数据的复杂度相匹配。如果输入是单
或双
,输出数据类型与输入数据类型匹配。
如果输入是内置整数数据类型或定点数据类型,则输出字长度和分数长度取决于通过FixedPointDataType财产。
完整的精度
当FixedPointDataType
属性设置为“充分精确”
时,应用如下关系:
在那里,
王输出——输出数据的字长。
FL输出——输出数据的部分长度。
王输入——输入数据的字长。
FL输入——输入数据的分段长度。
NumSect——在CIC过滤器中指定的区段数NumSections财产。
王输入而且FL输入继承自传递给对象算法的数据输入。对于内置整数输入,分数长度为0。
最小节字长
当FixedPointDataType
属性设置为“最小节字长度”
,则输出字长为您在中指定的值OutputWordLength财产。输出分数长度,FL输出由下式给出:
指定字和分数的长度
当FixedPointDataType
被设置为'指定单词和分数长度'
时,输出字长度和分数长度为您在OutputWordLength而且OutputFractionLength属性。
指定字的长度
当FixedPointDataType
被设置为“指定单词长度”
,则输出字长度为您在OutputWordLength
财产。输出分数长度,FL输出由下式给出:
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|fi
复数的支持:是的
对象的功能
要使用对象函数,请将System对象指定为第一个输入参数。例如,释放名为obj
,使用以下语法:
发行版(obj)
要获得此对象支持的筛选器分析方法的列表,请键入dsp.CICInterpolator.helpFilterAnalysis
在MATLAB®命令提示符。有关相应的函数参考页面,请参见过滤系统对象的分析方法.
例子
使用CICInterpolator系统对象插值信号
请注意:如果您使用的是R2016a或更早的版本,请将对对象的每次调用替换为等效的一步
语法。例如,obj (x)
就变成了步骤(obj, x)
.
创建一个dsp。C我C我nterpolator
系统对象™InterpolationFactor
设置为2。将定点信号从22.05 kHz插值到44.1 kHz,插值系数为2。
cicint = dsp.CICInterpolator (2)
cicint = dsp。C我C我nterpolator with properties: InterpolationFactor: 2 DifferentialDelay: 1 NumSections: 2 FixedPointDataType: 'Full precision'
创建一个dsp。年代我neWave
对象与SampleRate
设置为22.05 kHz,SamplesPerFrame
设置为32,和OutputDataType
设置为“自定义”
.若要生成定点信号,请设置CustomOutputDataType
属性到一个numerictype
对象。在本例中,将该值设置为numerictype ([], 16)
.分数长度是根据生成的正弦信号的值计算的,以提供最佳的精度。
若要生成定点信号,请设置方法
财产的dsp。年代我neWave
对象“查表”
.这种产生正弦信号的方法要求输出中每个正弦信号的周期能被采样周期均匀整除。也就是说,
每个通道都必须是整数值我= 1, 2,…,N。的价值
=
,变量
是正弦信号的频率,和
是信号的采样率。换句话说,就是比率
必须是整数。有关更多详细信息,请参见算法上节dsp。年代我neWave
对象页面。
在这个例子中, 设置为22050赫兹和 设置为1050hz。
Fs = 22.05 e3;正弦= dsp。SineWave (“频率”, 1050,...“SampleRate”Fs,...“SamplesPerFrame”32岁的...“方法”,“查表”,...“OutputDataType”,“自定义”)
正弦= dsp。SineWavewith properties: Amplitude: 1 Frequency: 1050 PhaseOffset: 0 ComplexOutput: false Method: 'Table lookup' TableOptimization: 'Speed' SampleRate: 22050 SamplesPerFrame: 32 OutputDataType: 'Custom' Show all properties
在迭代的每个循环中,在一帧中输入采样频率为22.05 kHz的定点正弦信号。将流信号内插2倍。插值输出每帧有64个样本。
为I = 1:16 x = sin ();y = cicint (x);结束
CIC插值滤波器的输出被一个特定的增益值放大。方法可以确定此值获得
函数。这个增益等于
阶段的CIC插值滤波器和等于
,在那里
是插值因子,
是微分延时,和
为CIC插值器的截面数。
gainCIC =获得(cicint)
gainCIC = 2
为了调整这个放大输出并使其与原始信号的振幅相匹配,将CIC插值信号与计算的增益值相除。
比较原始信号和插值信号的最后一帧。在绘图时,考虑2个样本的输出延迟。
n =(0:63)”;茎(n一句子)/ Fs,双(x一句子)“r”,“填充”)举行在;我= cicint.InterpolationFactor;茎(n (1:61) / (Fs *我),...双(y(4:结束))/ gainCIC,“b”)包含(的时间(秒)) ylabel (信号幅度的)传说(原始信号的,...“插值信号”,...“位置”,“北”)举行从;
使用信息
功能“长”
格式化,得到定点过滤段的字长和分数长度以及过滤输出。
信息(cicint“长”)
ans = '离散冷杉多重速率的过滤器(真实 ) ----------------------------------------- 滤波器结构:级联Integrator-Comb插入器插值系数:2微分延迟:1的部分:2稳定:是的线性相位:是的(1型)实施成本数量的乘数:0条数量:4的状态数:4乘法/输入样本:0添加/输入样本:6定点信息部分单词长度:17 17 17 17节部分长度:14 14 14 14输出字长:17输出分数长:14 '
确定节和输出字长度和分式长度
使用getFixedPointInfo
函数,可以确定不动点段的字长度和分数长度以及的输出dsp。C我CDec我米ator
而且dsp。C我C我nterpolator
系统对象。筛选器部分和输出的数据类型取决于FixedPointDataType
属性的过滤器系统对象™。
完整的精度
创建一个dsp。C我CDec我米ator
对象。的默认值NumSections
房地产是2。这个值表示有两个积分器和梳段。返回的WLs和FLs向量getFixedPointInfo
函数各包含五个元素。前两个元素表示两个积分器部分。第三和第四个元素代表两个梳段。最后一个元素表示筛选器输出。
蔡先生= dsp。C我CDec我米ator
蔡先生= dsp。C我CDec我米ator with properties: DecimationFactor: 2 DifferentialDelay: 1 NumSections: 2 FixedPointDataType: 'Full precision'
默认情况下,FixedPointDataType
属性设置为“充分精确”
.调用getFixedPointInfo
函数在此对象上使用输入数值类型,nt
,生成以下字长和分数长度向量。
元= 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
财产“最小节字长度”
.当输入为定点数据时,确定截面和输出定点信息,fi (randn(2), 1, 24日15)
.
释放(蔡先生);蔡先生。F我xedPointDataType =“最小节字长度”
蔡先生= dsp。C我CDec我米ator 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
函数。
蔡先生。F我xedPointDataType ='指定单词和分数长度'
蔡先生= dsp。C我CDec我米ator 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
财产“指定单词长度”
.
蔡先生。F我xedPointDataType =“指定单词长度”
蔡先生= dsp。C我CDec我米ator 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
有关该函数如何计算单词和分数长度的详细信息,请参见描述输出参数.
更多关于
CIC滤波器
CIC滤波器是一种优化的线性相位FIR滤波器,由梳状部分和积分器部分组成。
CIC插值滤波器在概念上是由一个上采样器和一个单速率CIC滤波器给出的,H (z),这是一个低通反成像滤波器。CIC插值滤波器使用级联积分器梳状(CIC)滤波器将输入信号的采样率提高一个整数因子。
在更高效的实现中,采用了单速率CIC滤波器H (z)是这样分解的:
在那里,
HC传递函数是N各节的级联梳状滤波器,每节的宽度为RM.
H我滤波器的积分器部分的传递函数包含N阶段的集成商。
N是分段数。CIC过滤器中的节数定义为梳状部分中的节数或滤波器的积分器部分。该值不代表整个过滤器的总区段数。
R是插值因子。
米是差分延迟。
在整体多速率实现中,算法采用高贵恒等式进行插值,并移动速率变化因子,R,要紧随其后N级联梳状过滤器的截面。
所得滤波器的传递函数由下式给出:
有关显示多速率实现的框图,请参见算法.
不动点
定点信号图显示了数据类型dsp。C我C我nterpolator
对象用于定点信号。
在那里,
secNT = numerictype (1 secWL secFL)
outNT = numertictype (1 outWL outFL)
secWL方法指定的节字长度是否为SectionWordLengths财产。
secFL截面分数的长度是通过SectionFractionLengths财产。
outWL方法指定的输出字长度是否为OutputWordLength财产。
outFL的输出分数长度是否指定OutputFractionLength财产。
的价值NumSections
在这个图中是2。
算法
参考文献
[1] Hogenauer, E.B.一种用于抽取和插值的经济型数字滤波器。IEEE声学,语音和信号处理汇刊.第29卷第2期,1981年,155-162。
[2] Meyer-Baese U。现场可编程门阵列数字信号处理.纽约:施普林格,2001。
[3]哈里斯,弗雷德里克J。通信系统的多速率信号处理.印第安纳波利斯:Prentice Hall PTR, 2004。
扩展功能
C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
看到MATLAB代码生成中的系统对象(MATLAB编码器).
HDL代码生成
使用HDL Coder™为FPGA和ASIC设计生成Verilog和VHDL代码。
该对象支持使用Filter Design HDL Coder™产品生成HDL代码。有关工作流和限制,请参见为过滤系统对象生成HDL代码(过滤器设计HDL编码器).
版本历史
介绍了R2012a
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。