主要内容

dsp.cicinterpolator.

使用级联集成器梳滤波器插入信号

描述

dsp.cicinterpolator.System Object™使用级联积分器 - 梳子(CIC)插值滤波器内插输入信号。CIC插值滤波器结构包括N段级联梳状滤波器,随后速率变化为R., 其次是N级联集成商的部分。有关详细信息,请参阅算法.这NumSections属性指定N,CIC滤波器中的部分数。这InterpolationFactor属性指定R.,插值因子。这getfixedpointinfo.函数返回固定点部分的字长度和分数长度和输出dsp.cicinterpolator.系统对象。属性也可以为这个System对象生成HDL代码generatehdl.函数。

笔记

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

使用CIC滤波器插入信号:

  1. 创建dsp.cicinterpolator.对象并设置其属性。

  2. 使用参数调用对象,就像它是一个函数。

要了解有关系统对象如何工作的更多信息,请参阅什么是系统对象?

创建

描述

例子

cicInterp= dsp.cicinterpolator.创建CIC插值System对象,该对象对输入信号应用CIC插值滤波器。

例子

cicInterp= dsp.cicinterpolator.(R.mN使用该对象创建一个CIC插值对象InterpolationFactor物业设为R., 这差异化物业设为m,NumSections物业设为N

cicInterp= dsp.cicinterpolator.(名称,价值创建CIC插值对象,将每个指定的属性设置为指定的值。将每个属性名用单引号括起来。您可以将此语法与之前的任何输入参数组合一起使用。

特性

全部展开

除非另有说明,属性是nontunable,这意味着您不能在调用对象之后更改它们的值。对象在调用时锁定,而发布功能解锁它们。

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

有关更改属性值的详细信息,请参阅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]

依赖性

属性设置时将应用此属性fixedpointdattype.财产'指定单词长度'要么指定单词和分数长度

数据类型:单身的||INT8.|int16|int32|int64|uint8.|uint16|UINT32|UINT64

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

例子:-2

例子:[-2 0 5 8]

依赖性

属性设置时将应用此属性fixedpointdattype.财产指定单词和分数长度

数据类型:单身的||INT8.|int16|int32|int64|uint8.|uint16|UINT32|UINT64

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

依赖性

属性设置时将应用此属性fixedpointdattype.财产属于“最小节字长”'指定单词长度', 要么指定单词和分数长度

数据类型:单身的||INT8.|int16|int32|int64|uint8.|uint16|UINT32|UINT64

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

依赖性

属性设置时将应用此属性fixedpointdattype.财产指定单词和分数长度

数据类型:单身的||INT8.|int16|int32|int64|uint8.|uint16|UINT32|UINT64

用法

描述

例子

Cicitterpout.= Cicitterp(输入)使用CIC内插器插入输入。

输入参数

全部展开

数据输入,指定为向量或矩阵。如果输入为单个或双数据类型,则忽略与固定点数据类型相关的属性设置。

数据类型:单身的||INT8.|int16|int32|int64|uint8.|uint16|UINT32|UINT64|FI.
复数支持:金宝app是的

输出参数

全部展开

内插输出,作为向量或矩阵返回。输出帧大小等于(InterpolationFactor)×输入框大小。输出数据的复杂性与输入数据的复杂性匹配。如果输入是单身的要么,则输出数据类型与输入数据类型匹配。

如果输入是内置整数数据类型或固定点数据类型,则输出字长度和分数长度依赖于您选择的固定点数据类型设置fixedpointdattype.财产。

完整的精度

fixedpointdattype.属性设置为“充分精确”,以下关系适用:

W. L. 输出 = W. L. 输入 + N m S. E. C T. F L. 输出 = F L. 输入

在哪里,

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

  • fl输出——输出数据的分数长度。

  • WL.输入- 输入数据的字长。

  • fl输入- 输入数据的分数长度。

  • numsect.- 通过该CIC滤波器中的部分数NumSections财产。

WL.输入fl输入继承自输入到对象算法的数据输入。对于内置整数输入,分数长度为0。

最小部分字长度

fixedpointdattype.属性设置为“最小节字长”中指定的输出字长OutputWordLength财产。输出分数长度,fl输出为下式:

F L. 输出 = W. L. 输出 - W. L. 输入 - F L. 输入 + N m S. E. C T.

指定单词和分数长度

fixedpointdattype.被设置为指定单词和分数长度,输出的字长和分数长度是您在OutputWordLength输出折叠长长属性。

指定单词长度

fixedpointdattype.被设置为'指定单词长度',输出字长度是您指定的值OutputWordLength财产。输出分数长度,fl输出为下式:

F L. 输出 = W. L. 输出 - W. L. 输入 - F L. 输入 + N m S. E. C T.

数据类型:单身的||INT8.|int16|int32|int64|uint8.|uint16|UINT32|UINT64|FI.
复数支持:金宝app是的

对象功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,要发布命名的系统对象的系统资源obj.,使用下面的语法:

释放(obj)

全部展开

generatehdl. 为量化DSP滤波器生成HDL代码(需要滤波器设计HDL编码器
轰炸 离散时间过滤器的脉冲响应系统对象
弗里克 离散时间滤波器的频率响应系统对象
phasez 离散时间滤波器的相位响应系统对象(打开)
FVTool. 可视化DSP滤波器的频率响应
获得 CIC滤波器的增益系统对象
getfixedpointinfo. 获取定点字和分数长度
信息 有关过滤器的信息系统对象
一步 跑步系统对象算法
发布 释放资源并允许更改系统对象属性值和输入特性
重置 使内部状态复位系统对象

有关过滤器分析方法列表此对象支持,请键入金宝appdsp.cicinterpolator.helpfilteranalysis.在MATLAB®命令提示符。对于相应的函数参考页面,请参阅过滤系统对象的分析方法

例子

全部收缩

笔记:如果您使用的是R2016A或早期版本,则用等价物将每个调用替换为对象一步句法。例如,obj(x)成为步骤(obj,x)

创建一个dsp.cicinterpolator.系统对象™InterpolationFactor设置为2.将固定点信号插值为22.05 kHz至44.1 kHz。

CICINT = DSP.cicinterpolator(2)
CICINT = DSP.cicinterpolator具有属性:InterpolationFactor:2 SciteIlyDelay:1 NUMPERIONS:2 FINDITPOINTDATYPE:'全精密'

创建一个dsp.sinewave.对象采样率设置为22.05 kHz,SamplesPerFrame设置为32,outputDataType.设置'风俗'.要生成固定点信号,请设置customoutputdatatype.财产至A.numerictype对象。对于本例,将值设置为Numerictype([],16).分数长度是根据生成的正弦信号的值来计算的,以给出可能的最佳精度。

要生成固定点信号,请设置方法财产的dsp.sinewave.反对“表查找”.这种产生正弦信号的方法要求输出中的每个正弦曲线的时段被样品周期均匀地划分。那是, 1 / F 一世 T. S. = K. 一世 每个频道必须是整数值一世= 1,2,......,N。的价值 T. S. 等于 1 / F S. ,变量 F 一世 是正弦信号的频率,和 F S. 是信号的采样率。换句话说,比率 F S. / F 一世 必须是整数。有关详细信息,请参见算法一节dsp.sinewave.对象页面。

在这个例子中, F S. 设置为22050 Hz和 F 一世 设置为1050hz。

Fs = 22.05 e3;正弦= dsp。SineWave ('频率',1050,'采样率',fs,'samplesperframe',32,......'方法'“表查找”'outputdatatype''风俗'
正弦= dsp。S.一世neWave with properties: Amplitude: 1 Frequency: 1050 PhaseOffset: 0 ComplexOutput: false Method: 'Table lookup' TableOptimization: 'Speed' SampleRate: 22050 SamplesPerFrame: 32 OutputDataType: 'Custom' Show all properties

在每个循环的迭代中,在22.05kHz中采样的定点正弦信号的帧中的流。将流式信号插值为2.个因子2.插值输出每帧具有64个样本。

为了i = 1:16 x = sine();y = cicint(x);结尾

CIC插值滤波器的输出通过特定的增益值放大。您可以使用使用的确定此值获得函数。这个增益等于 2 N TH. CIC插值过滤器的阶段和等于 一世 × D. N / 一世 ,在那里 一世 为内插因子, D. 是差分延迟,和 N 是CIC内插器的部分数。

GainCIC = GAIN(CICINT)
Gaincic = 2

为了调整该放大的输出并将其匹配到原始信号的幅度,将CIC内插信号与计算的增益值划分。

比较原始和内插信号的最后帧。绘制时,占2个样本的输出延迟。

n =(0:63)';茎(n(1:31)/ fs,double(x(1:31)),'r''填充') 抓住;i = cicint.InterpolationFactor;茎(n(1:61)/(fs * i),......双(y(4:结束))/ Gaincic,'B')Xlabel('时间(秒)')ylabel('信号幅度') 传奇(原始信号的'插值信号'......'地点'“北”) 抓住离开;

图中包含一个坐标轴。轴包含2个类型为stem的对象。这些对象代表原始信号,插值信号。

使用信息功能在'长'格式化,获取定点滤波器部分的字长度和分数长度和滤波器输出。

信息(cicint'长'
ANS ='离散时间FIR多速率过滤器(真实)----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------过滤器结构:级联集成器 - 梳插值器插值因子:2差分延迟:1个部分:2稳定:是线性阶段:是(类型1)实施成本乘数的成本数量:0的加法者数量:4个州数量:4乘法每次输入采样:0个输入每个输入采样:6个定点信息部分字长:17 17 17 17截面长度:14 14 14 14输出字长度:17输出分数:14'

使用getfixedpointinfo.函数,可以确定定点段的单词长度和分数长度以及dsp.cicdecimator.dsp.cicinterpolator.系统对象。过滤器部分和输出的数据类型取决于fixedpointdattype.过滤器系统对象™的属性。

完整的精度

创建一个dsp.cicdecimator.对象。默认值NumSections房地产是2。这个值表明有两个积分器和梳状节。返回的WLs和FLs载体getfixedpointinfo.函数包含每个元素。前两个元素代表两个集成器部分。第三和第四元件代表两个梳状部分。最后一个元素表示滤波器输出。

cicd = dsp.cicdecimator.
cicd = dsp.cicdecimator.with properties: DecimationFactor: 2 DifferentialDelay: 1 NumSections: 2 FixedPointDataType: 'Full precision'

默认情况下,fixedpointdattype.对象的属性设置为“充分精确”.调用getfixedpointinfo.使用输入数字类型的此对象函数,NT.,产生以下字距和分数长度向量。

nt = numerictype(1,16,15)
nt = dataTypeMode:定点:二进制点缩放签名:签名WordLength:16 FractionLength:15
[WLS,FLS] = GetFixedPointInfo(CICD,NT)% #好吧
WLS =1×518 18 18 18 18
FLS =1×515 15 15 15 15

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

如果你锁定蔡先生对象通过向其算法传递输入,则不需要传递NT.对此的论点getfixedpointinfo.函数。

INPUT = INT64(RANDN(8,1))
输入=8x1 int64列向量1 2 -2 1 0 -1 0 0
输出= CICD(输入)
输出=4×1对象0 1 3 0 DataTypeMode:定点:二进制点缩放Signedness: Signed WordLength: 66 FractionLength: 0
[WLS,FLS] = GetFixedPointInfo(CICD)% #好吧
WLS =1×566 66 66 66 66
FLS =1×50 0 0 0 0

输出和部分字长度是输入字长度的总和,64在这种情况下,以及部分的数量,2.输出和部分分数长度为0,因为输入是内置整数。

最小部分字长度

释放对象并更改fixedpointdattype.财产“最小节字长”.确定输入是固定点数据时的部分和输出定点信息,FI(Randn(8,2),1,24,15)

释放(CICD);cicd.fixedPointDataType =“最小节字长”
CICD = DSP.cicDecimator具有属性:decimationFactor:2 SciteIlyDelay:1 NUMPERIONS:2 FINCESTPOINTDATTYPE:'最小部分Word Lengths'outputWordLength:32
Inputf = Fi(Randn(8,2),1,24,15)
Inputf =.8×2对象3.5784 -0.1241 2.7694 1.4897 -1.3499 1.4090 3.0349 1.4172 0.7254 1.4172 0.7254 0.6715 -0.0630 -1.2075 0.7148 0.7172-0.7172 -0.2050 1.6302 DataTypeMode:定点:二进制点缩放签名:签名WordLength:24 FractionLength:15
[WLS,FLS] = GetFixedPointInfo(CICD,NumericType(Inputf))% #好吧
WLS =1×526 26 26 26 32
FLS =1×515 15 15 15 21

指定单词和分数长度

改变fixedpointdattype.财产指定单词和分数长度.确定定点信息使用getfixedpointinfo.函数。

cicd.fixedPointDataType =指定单词和分数长度
cicd = dsp.cicdecimator.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

根据相应的固定点属性分配部分和输出字长度和分数长度蔡先生对象。这些值不是由输入的数字类型决定的。要确认,请打电话给getfixedpointinfo.函数,而不传递numerictype输入参数。

[WLS,FLS] = GetFixedPointInfo(CICD)% #好吧
WLS =1×516 16 16 16 32
FLS =1×50 0 0 0 0

指定单词长度

要指定滤波器部分和输出的单词长度,请设置fixedpointdattype.财产'指定单词长度'

cicd.fixedPointDataType ='指定单词长度'
cicd = dsp.cicdecimator.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] Hogerauer,E.B.“用于抽取和插值的经济类别过滤器。”IEEE声学、语音和信号处理汇刊.第29卷,第2,16号,155-162。

[2] Meyer-Baese U。具有现场可编程门阵列的数字信号处理.纽约:斯普林斯,2001年。

[3] Harris,Fredric J.通信系统的多速率信号处理.印第安纳波利斯,在:Prentice Hall Ptr,2004年。

扩展能力

在R2012A介绍