dsp。FarrowRateConverter
具有任意转换因子的多项式抽样速率转换器
描述
的dsp。FarrowRateConverter
系统对象™实现了一个使用Farrow结构的多项式拟合样本速率转换过滤器。您可以使用该对象将信号的采样率按任意因子向上或向下转换。该对象支持定点操作。金宝app
转换:转换信号的采样率:
创建
dsp。FarrowRateConverter
对象并设置其属性。调用带有参数的对象,就像调用函数一样。
要了解更多关于System对象如何工作的信息,请参见什么是系统对象?(MATLAB)。
创建
语法
描述
创建一个基于多项式滤波的采样速率转换器系统对象,frc
= dsp。FarrowRateConverterfrc
.对于输入信号的每个通道,frc
将输入采样率转换为输出采样率。
使用一个或多个名值对设置属性。将每个属性名用单引号括起来。frc
= dsp。FarrowRateConverter (名称,值
)
FRC = dsp。FarrowRateConverter(“规范”、“系数”、“系数”,[1 2;3 4])
返回一个从44.1 kHz转换到48 kHz的滤波器,使用自定义系数实现二阶多项式滤波器。
返回一个采样速率转换器系统对象,frc
= dsp。FarrowRateConverter (傅氏国际
,fsOut
,托尔
,np
)frc
,InputSampleRate属性设置为傅氏国际
,OutputSampleRate属性设置为fsOut
,OutputRateTolerance属性设置为托尔
,PolynomialOrder属性设置为np
.
属性
除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放
函数解锁它们。
如果属性是可调,您可以随时更改其值。
有关更改属性值的更多信息,请参见在MATLAB中使用系统对象设计系统(MATLAB)。
过滤性能
InputSampleRate
- - - - - -输入信号的采样率
44100
(默认)|正标量(Hz)
输入信号的采样率,指定为Hz的正标量。输入采样速率必须大于感兴趣的带宽。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
OutputSampleRate
- - - - - -输出信号的采样率
48000
(默认)|正标量(Hz)
输出信号的采样率,指定为Hz的正标量。输出采样率可以表示输入信号的上采样或下采样。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
OutputRateTolerance
- - - - - -输出采样率的最大公差
0
(默认)|积极的标量
输出采样率的最大公差,指定为从0到0.5的正标量(含)。
实际的输出采样率有所不同,但都在指定的范围内。例如,如果OutputRateTolerance
指定为0.01
,则实际输出采样率在范围内OutputSampleRate
±1%。这种灵活性通常使过滤器设计更简单。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
规范
- - - - - -指定滤波系数的方法
多项式阶的
(默认)|“系数”
为插值滤波器指定滤波器系数的方法,指定为以下之一:
多项式阶的
-使用PolynomialOrder
属性来指定拉格朗日-插值-滤波多项式的顺序。该对象计算满足速率和公差属性的系数。“系数”
-使用系数
属性直接指定多项式系数。
PolynomialOrder
- - - - - -拉格朗日-插值-滤波多项式的阶
3.(默认)|小于等于4的正整数
拉格朗日-插值-滤波多项式的阶,指定为小于或等于4的正整数。该对象计算满足速率和公差属性的系数。
依赖关系
此属性仅在设置时应用规范
来多项式阶的
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
系数
- - - - - -滤波多项式系数
[1 1;1 0]
(默认)|实值方阵
过滤多项式系数,指定为实值米——- - - - - -米矩阵,米是多项式阶。
该图显示了a的信号流图dsp。FarrowRateConverter
对象,其系数设置为[1 2;3 4]
.
FIR滤波器的每个分支对应于系数矩阵的一行。
依赖关系
此属性仅在设置时应用规范
来“系数”
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
定点属性
RoundingMethod
- - - - - -定点运算的舍入方法
“地板”
(默认)|“天花板”
|“收敛”
|“最近的”
|“圆”
|“零”
定点运算的舍入方法,指定为字符向量。有关舍入方法的更多信息,请参见舍入模式.
OverflowAction
- - - - - -定点操作的溢出动作
“包装”
(默认)|“饱和”
定点操作的溢出动作,指定为“包装”
或“饱和”
.有关溢出操作的详细信息,请参见溢出处理.
CoefficientsDataType
- - - - - -滤波系数的数据类型
numerictype (16)
(默认)|numerictype
对象
过滤器系数的数据类型,指定为有符号numerictype
对象。默认的数据类型是带符号的16位数据numerictype
对象。您必须指定numerictype
对象,不需要特定的二进制点缩放。为了最大化精度,对象根据系数值确定此数据类型的分数长度。
FractionalDelayDataType
- - - - - -分数延迟的数据类型
numerictype (0, 8)
(默认)|numerictype
对象
延迟分数的数据类型,指定为无符号numerictype
对象。默认的数据类型是无符号的8位数据numerictype
对象。您必须指定numerictype
对象,不需要特定的二进制点缩放。为了最大化精度,对象根据延迟分数值确定该数据类型的分数长度。
MultiplicandDataType
- - - - - -乘数的数据类型
numerictype(1, 16日,13)
(默认)|numerictype
对象
乘数的数据类型,指定为有符号numerictype
对象。默认的数据类型是带符号的16位numerictype
具有13位分数长度的对象。您必须指定numerictype
具有特定二进制点缩放的对象。
OutputDataType
- - - - - -输出的数据类型
'与输入字长度相同'
(默认)|“与累加器相同”
|numerictype
对象
输出的数据类型,指定为以下之一:
'与输入字长度相同'
-输出字长、分式长度与输入相同。“与累加器相同”
-输出字长度和分数长度与累加器相同。numerictype
object—带符号定点输出数据类型。如果不指定分数长度,对象将根据输入范围计算分数长度。对象保留输入的动态范围。
使用
语法
输入参数
x
- - - - - -输入信号
向量|矩阵
输入信号,指定为向量或矩阵。的行长x
必须是整体抽取因子的倍数。每一栏x
被视为一个单独的通道。
输出参数
y
-重采样信号
向量|矩阵
重新采样的信号,作为矢量或矩阵返回。
对象的功能
要使用对象函数,请将System对象指定为第一个输入参数。例如,释放名为obj
,使用以下语法:
发行版(obj)
专用于dsp。FarrowRateConverter
getPolynomialCoefficients |
得到法罗速率转换滤波器的多项式系数 |
getActualOutputRate |
获得实际产出率 |
getRateChangeFactors |
得到整体插值和抽取因子 |
generatehdl |
生成量化DSP滤波器的HDL代码(需要filter Design HDL Coder) |
例子
使用dsp对音频信号进行采样。FarrowRateConverter
请注意:如果您使用的是R2016a或更早的版本,请将对对象的每次调用替换为等效的一步
语法。例如,obj (x)
就变成了步骤(obj, x)
.
注意:的dsp。AudioFileReader
而且dsp。AudioFileWriter
中不支持系统对象金宝appMATLAB在线.
创建一个dsp。FarrowRateConverter
系统对象™转换音频信号从44.1 kHz到96 kHz。设置过滤器的多项式顺序。
Fs1 = 44.1e3;Fs2 = 96e3;LagrangeOrder = 2;% 1 =线性插值FRC = dsp。FarrowRateConverter (“InputSampleRate”, fs1、...“OutputSampleRate”fs2,...“PolynomialOrder”, LagrangeOrder);Ar = dsp。AudioFileReader (“guitar10min.ogg”,“SamplesPerFrame”, 14700);Aw = dsp。AudioFileWriter (“guitar10min_96kHz.wav”,“SampleRate”, fs2);
检查得到的插值和抽取因子。
[interp,decim] = getRateChangeFactors(frc)
Interp = 320
Decim = 147
显示对象用来拟合输入样本的多项式。
coeffs = get多项式alcoefficient (frc)
多项式系数=3×30.5000 -0.5000 0 -1.0000 0 1.0000 0.5000 0.5000 0
转换100帧的音频信号。将结果写入文件。
为N = 1:1:100 x = ar();Y = frc(x);亚历山大-伍尔兹(y);结束
释放AudioFileWriter
系统对象™来完成输出文件的创建。
发布(aw)发布(ar)
画出第100帧数据的输入和输出信号。延迟输入以补偿过滤器的延迟。
T1 = 0:1/fs1:1/30-1/fs1;T2 = 0:1/fs2:1/30-1/fs2;delay = ceil((LagrangeOrder+1)/2)/fs1;El1 = 1:长度(t1)-延迟;El2 = 1:长度(t2);El2 (1:delay) = [];图副图(2,1,1)图(t1(1:length(el1)),x(el1,1))保持在情节(t1(1:长度(el1)), x (el1, 2))包含(“时间(s)”)标题(的输入通道) subplot(2,1,2) plot(t2(1:length(el2)),y(el2,1))保持在情节(t2(1:长度(el2)), y (el2, 2))包含(“时间(s)”)标题(“输出通道”)
放大查看样本率的差异。
图subplot(2,1,1) plot(t1(1:length(el1)),x(el1,1),“啊——”)举行在情节(t2(1:长度(el2)), y (el2, 1),“d——”) xlim([0.0104 0.0107]) title(“第一频道”)包含(“时间(s)”)传说(“输入”,“输出”) subplot(2,1,2) plot(t1(1:length(el1)),x(el1,2),“啊——”)举行在情节(t2(1:长度(el2)), y (el2, 2),“d——”xlabel([0.0104 0.0107])“时间(s)”)标题(“第二频道”)传说(“输入”,“输出”)
通过调整公差减少输入尺寸限制
创建一个dsp。FarrowRateConverter
系统对象™0%公差。输出速率等于OutputSampleRate财产
.输入的大小必须是抽取因子的倍数,米
.这里M等于320。
FRC = dsp。FarrowRateConverter (“InputSampleRate”96年e3,“OutputSampleRate”44.1 e3);FsOut = getActualOutputRate(frc)
FsOut = 44100
[L,M] = getRateChangeFactors(frc)
L = 147
M = 320
在输出速率上允许1%的公差,并观察抽取因子的差异。
frc。outputrattolerance = 0.01;FsOut2 = getActualOutputRate(frc)
FsOut2 = 4.4308e+04
[L2,M2] = getRateChangeFactors(frc)
L2 = 6
M2 = 13
抽取因子现在只有13。抽取系数越低,输入大小的灵活性就越大。输出速率在规定范围内OutputSampleRate
1%。
dsp的频率响应。FarrowRateConverter
创建一个dsp。FarrowRateConverter
具有默认属性的系统对象™。计算并显示频率响应。
frc = sp. farrowrateconverter;[h,f] = freqz(frc);情节(f, 20 * log10 (abs (h))) ylabel (滤波器响应的)包含(“频率(rad / s)”)
确定dsp的计算成本。FarrowRateConverter
创建dsp。FarrowRateConverter系统对象™,具有默认值。确定它的计算成本:系数的数量,状态的数量,每个输入样本的乘法和每个输入样本的加法。
frc = sp. farrowrateconverter;成本(frc)
中科=带有字段的结构:NumCoefficients: 16 NumStates: 3 MultiplicationsPerInputSample: 14.1497 AdditionsPerInputSample: 11.9728
重复计算,允许输出采样率有10%的公差。
frc。outputrattolerance = 0.1;CTL =成本(frc)
ctl =带有字段的结构:NumCoefficients: 16 NumStates: 3 MultiplicationsPerInputSample: 13 AdditionsPerInputSample: 11
算法
法罗滤波器利用霍纳规则实现分段多项式插值,从多项式中计算样本。用于拟合输入样本的多项式系数对应于拉格朗日插值系数。
一旦一个多项式拟合到输入数据,多项式的值就可以在任意点计算出来。因此,多项式滤波器可以在输入样本之间的任意位置进行插值。
您可以使用任意顺序的多项式来拟合现有的样本。然而,由于大阶多项式经常振荡,在实践中使用1、2、3或4阶多项式。
该块只通过改变分数延迟计算所需位置的插值值,µ.这个值是前一个输入样本和当前输出样本之间的间隔。所有的滤波系数保持恒定。
对输入样本进行过滤米+ 1 FIR滤波器,其中米是多项式阶。
这些滤波器的输出乘以分数延迟,µ.
输出是乘法结果的和。
该图表显示了数据类型dsp。FarrowRateConverter
对象用于定点信号和浮点信号。您可以使用对象的属性指定这些数据类型,请参见定点属性.如果输入是浮点数,则filter中的所有数据类型都与输入数据类型相同,单
或双
.
方法定义内部数据类型,如果输入是定点,则FIR筛选器使用RoundingMode
,OverflowMode
,CoefficientsDataType
属性。FIR滤波器内的累加器和产品使用全精度数据下载188bet金宝搏类型。对象将FIR过滤器的输出强制转换为MultiplicandDataType
.
参考文献
Hentschel, T.和G. Fettweis。可重构无线电终端中用于采样率转换的连续时间数字滤波器。Frequenz.2001年第55卷5-6期,185-188页。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
另请参阅
功能
系统对象
块
在R2014b中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。