designMultistageInterpolator
多级插补器设计
语法
描述
例子
设计高效插补器
设计一个单级插补器designMultirateFIR
函数和多级插补器使用designMultistageInterpolator
函数。确定两种设计的效率使用成本
函数。实施效率由两个成本指标表征:NumCoefficients
而且MultiplicationsPerInputSample
.
计算实现这两种设计的成本,并确定哪种设计更有效。为了进行比较,可以设计滤波器,使它们的过渡宽度相同。
初始化
选择插补系数为48,输入采样率为30.72 MHz,单向带宽为100 kHz,阻带衰减为90 dB。
L = 48;Fin = 30.72e6;stop = 90;BW = 1e5;
使用designMultirateFIR
函数
设计了插值滤波器designMultirateFIR
功能产生单级设计。将半多相长度设置为有限整数,在本例中为4。
HalfPolyLength = 4;b = designMultirateFIR(L,1,HalfPolyLength, stop);d = dsp.FIRInterpolator(L,b)
D = dsp。FIRInterpolator with properties: InterpolationFactor: 48 NumeratorSource: 'Property'分子:[0 -6.0692e-06 -1.4587e-05 -2.5889e-05…显示所有属性
计算实现插值器的成本。插值滤波器需要376个系数和7个状态。每个输入样本的乘法数和每个输入样本的加法数分别为376和329。
成本(d)
ans =带字段的结构:NumCoefficients: 376 NumStates: 7 MultiplicationsPerInputSample: 376 AdditionsPerInputSample: 329
使用designMultistageInterpolator
函数
设计与单级设计滤波器规格相同的多级插补器。使用以下关系计算过渡宽度:
Fc = Fin/(2*L);TW = 2*(Fc-BW);
默认情况下,所给出的阶段数NumStages
参数设置为“汽车”
,从而得到一个最佳设计,尽量减少每个输入样本的乘法次数。
c = designMultistageInterpolator(L,Fin,TW, stop)
C = dsp。FilterCascade的属性:Stage1: [1x1 dsp. properties]FIRInterpolator] Stage2: [1x1 dsp。FIRInterpolator] CloneStages: false
调用信息
函数c
显示筛选器是作为两个级联实现的dsp。FIRInterpolator
插值因子分别为24和2的对象。
计算实现插值器的成本。
成本(c)
ans =带字段的结构:NumCoefficients: 184 NumStates: 12 MultiplicationsPerInputSample: 322 AdditionsPerInputSample: 275
的NumCoefficients
和MultiplicationsPerInputSample
设计的两级滤波器参数较低designMultistageInterpolator
功能,使其更高效。
比较两种设计的震级响应。
HVFT = fvtool(b,c);传奇(hvft“单级”,“多级”)
震级响应表明,两个滤波器的过渡宽度是相同的,使得滤波器具有可比性。的成本
函数表明,采用多级设计比采用单级设计效率更高。
使用“设计”
选项。esignMultistageInterpolator
函数
属性可以使过滤器更加有效“CostMethod”
的参数designMultistageInterpolator
函数“设计”
.默认情况下,该参数设置为“估计”
.
在“设计”
模式下,函数设计每个阶段并计算过滤器顺序。这将产生与“估计”
模式,其中函数估计每个阶段的过滤器顺序,并根据估计设计过滤器。
注意“设计”
期权花费的时间比“估计”
选择。
cOptimal =设计多级插值器(L,鳍,TW,停止,“CostMethod”,“设计”)
cOptimal = dsp。FilterCascadewith properties: Stage1: [1x1 dsp.FIRInterpolator] Stage2: [1x1 dsp.FIRInterpolator] Stage3: [1x1 dsp.FIRInterpolator] CloneStages: false
成本(cOptimal)
ans =带字段的结构:NumCoefficients: 74 NumStates: 17 MultiplicationsPerInputSample: 296 AdditionsPerInputSample: 249
比较多级插补器设计
设计一个总插补系数为24的插补器designMultistageInterpolator
函数。设计滤波器的两种配置:
两级配置-
NumStages
设置为2。自动配置-
NumStages
设置为“汽车”
.这种配置设计了一个过滤器,每个输入样本的乘法最少。
比较成本
实现这两种配置。
初始化
选择插补因子24,输入采样率6 kHz,阻带衰减90 dB,过渡宽度0.03 6000/2。
L = 24;Fs = 6000;stop = 90;TW = 0.03*Fs/2;
设计过滤器
设计两个过滤器使用designMultistageInterpolator
函数。
cAuto = designMultistageInterpolator(L, f,TW, stop,“NumStages”,“汽车”)
cAuto = dsp。FilterCascade的属性:Stage1: [1x1 dsp. properties]FIRInterpolator] Stage2: [1x1 dsp。FIRInterpolator] Stage3: [1x1 dsp。FIRInterpolator] CloneStages: false
cTwo = designMultistageInterpolator(L,Fs,TW, stop,“NumStages”, 2)
cTwo = dsp。FilterCascade的属性:Stage1: [1x1 dsp. properties]FIRInterpolator] Stage2: [1x1 dsp。FIRInterpolator] CloneStages: false
命令查看筛选器信息信息
函数。的“汽车”
配置设计了三个FIR插补因子分别为4、3和2的级联插补器。两级结构设计了两个FIR插补器的级联,插补因子分别为6和4。
比较成本
方法比较实现这两种设计的成本成本
函数。
成本(考托)
ans =带字段的结构:NumCoefficients: 70 NumStates: 28 MultiplicationsPerInputSample: 190 AdditionsPerInputSample: 167
成本(cTwo)
ans =带字段的结构:NumCoefficients: 98 NumStates: 22 MultiplicationsPerInputSample: 208 AdditionsPerInputSample: 185
的“汽车”
组态插值滤波器产生了三段式设计,在性能方面优于两段式设计NumCoefficients
而且MultiplicationsPerInputSample
指标。
确定最佳多级插补器设计
多级设计中的滤波器满足以下条件:
组合响应必须满足或超过给定的设计规范。
组合插值必须等于所需的整体插值。
对于总插补系数为50的分段,有几个分段组合。
若要获得总系数最少的设计,请设置“MinTotalCoeffs”
参数真正的
.
stop = 80;L = 50;Fs = 6000;TW = 0.03*Fs/2;cMinCoeffs =设计多级插值器(L, f,TW,停止,“MinTotalCoeffs”,真正的)
cMinCoeffs = dsp。FilterCascadewith properties: Stage1: [1x1 dsp.FIRInterpolator] Stage2: [1x1 dsp.FIRInterpolator] Stage3: [1x1 dsp.FIRInterpolator] CloneStages: false
成本(cMinCoeffs)
ans =带字段的结构:NumCoefficients: 58 NumStates: 18 MultiplicationsPerInputSample: 306 AdditionsPerInputSample: 257
要获得每个输入样本的乘法最少的设计,请设置“NumStages”
“汽车的
.
cMinMulti = designMultistageInterpolator(L,Fs,TW, stop,“NumStages”,“汽车”)
cMinMulti = dsp。FilterCascadewith properties: Stage1: [1x1 dsp.FIRInterpolator] Stage2: [1x1 dsp.FIRInterpolator] CloneStages: false
成本(cMinMulti)
ans =带字段的结构:NumCoefficients: 156 NumStates: 9 MultiplicationsPerInputSample: 252 AdditionsPerInputSample: 203
比较使用的两个滤波器的幅度响应fvtool
.两种滤波器都具有相同的过渡带特性和低于80 dB的阻带衰减。
hvft = fvtool(cMinCoeffs,cMinMulti);传奇(hvft“最小化总系数”,“最小化每个输入样本的乘法次数”)
输入参数
Fs
- - - - - -输入采样率
48000
(默认)|正实标量
多级插补器后输出信号的采样率,指定为正实标量。如果没有指定,Fs
默认为48,000 Hz。多级插补器的截止频率为Fs
/ (2l
).
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
Astop
- - - - - -最小阻带衰减
正实标量
结果设计的最小阻带衰减,指定为正实标量。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:C = designMultistageInterpolator(48,48,200,80,'NumStages','auto')
设计了一个多级插值器,每个输入样本的乘法最少。
NumStages
- - - - - -插补器级数
“汽车”
(默认)|正整数
插补器的级数,指定为正整数。如果设置为“汽车”
,设计算法确定导致每个输入样本乘法最少的阶段数。如果指定为正整数,N,整体插值因子,l
,至少要能因式分解N因素,不计算1
或l
作为因素。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
MinTotalCoeffs
- - - - - -最小化系数总数
假
(默认)|真正的
当假
,设计算法使每个输入样本的乘法次数最小化。当真正的
时,设计算法使总系数最小。
数据类型:逻辑
CostMethod
- - - - - -成本计算方法
“估计”
(默认)|“设计”
成本计算方法,指定为:
“估计”
——该函数估计每个阶段所需的滤波器顺序,并根据估计设计滤波器。这种方法比“设计”
,但可能导致次优设计。“设计”
——该函数设计每个阶段并计算过滤顺序。
数据类型:字符
CostTolerance
- - - - - -宽容
1 e-6
(默认)|积极的标量
公差,指定为正标量。该公差用于确定具有最少MPIS数量的多级配置。当多个配置在指定的公差范围内产生相同的最低MPIS时,将选择产生最低系数数的配置。要查看特定过滤器的系数和MPIS的总数,请使用成本
函数。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
输出参数
C
-设计过滤器
dsp。FilterCascade
dsp。FilterCascade
设计的过滤器,返回作为dsp。FilterCascade
系统对象™。该滤波器是由函数设计的多个级联。阶段的数量是由“NumStages”
论点。
要获得关于每个筛选器阶段的信息,请调用信息
函数在C
论点。
算法
将整体插补因子分解为较小的插补因子,每个插补因子分别作为相应阶段的插补因子。所有单独阶段的组合插值必须等于整体插值。组合响应必须满足或超过给定的设计规范。
函数确定插值器通过的阶段数“NumStages”
论点。阶段的顺序是根据实施成本确定的。默认情况下,“NumStages”
设置为“汽车”
,从而得到MPIS最少的序列。当多个配置在指定的公差范围内产生相同的最低MPIS时,将选择产生最低系数数的配置。如果“MinTotalCoeffs”
设置为真正的
时,该函数确定所需总系数最少的序列。
默认情况下,“CostMethod”
设置为“估计”
.在这种模式下,函数估计每个阶段所需的滤波器顺序,并根据估计来设计滤波器。这种方法更快,但可能导致次优设计。为获得最优设计,请设置“CostMethod”
来“设计”
.在这种模式下,函数设计每个阶段并计算过滤器顺序。
版本历史
在R2018b中引入
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国家站点没有针对您所在位置的访问进行优化。