文档

dsp。FarrowRateConverter

具有任意转换因子的多项式抽样速率转换器

描述

dsp。FarrowRateConverter系统对象™实现了一个使用Farrow结构的多项式拟合样本速率转换过滤器。您可以使用该对象将信号的采样率按任意因子向上或向下转换。该对象支持定点操作。金宝app

转换:转换信号的采样率:

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

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

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

创建

描述

frc= dsp。FarrowRateConverter创建一个基于多项式滤波的采样速率转换器系统对象,frc.对于输入信号的每个通道,frc将输入采样率转换为输出采样率。

例子

frc= dsp。FarrowRateConverter (名称,值使用一个或多个名值对设置属性。将每个属性名用单引号括起来。

例子:FRC = dsp。FarrowRateConverter(“规范”、“系数”、“系数”,[1 2;3 4])返回一个从44.1 kHz转换到48 kHz的滤波器,使用自定义系数实现二阶多项式滤波器。

frc= dsp。FarrowRateConverter (傅氏国际fsOut托尔np返回一个采样速率转换器系统对象,frc,InputSampleRate属性设置为傅氏国际OutputSampleRate属性设置为fsOutOutputRateTolerance属性设置为托尔,PolynomialOrder属性设置为np

属性

全部展开

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

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

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

过滤性能

输入信号的采样率,指定为Hz的正标量。输入采样速率必须大于感兴趣的带宽。

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

输出信号的采样率,指定为Hz的正标量。输出采样率可以表示输入信号的上采样或下采样。

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

输出采样率的最大公差,指定为从0到0.5的正标量(含)。

实际的输出采样率有所不同,但都在指定的范围内。例如,如果OutputRateTolerance指定为0.01,则实际输出采样率在范围内OutputSampleRate±1%。这种灵活性通常使过滤器设计更简单。

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

为插值滤波器指定滤波器系数的方法,指定为以下之一:

  • 多项式阶的-使用PolynomialOrder属性来指定拉格朗日-插值-滤波多项式的顺序。该对象计算满足速率和公差属性的系数。

  • “系数”-使用系数属性直接指定多项式系数。

拉格朗日-插值-滤波多项式的阶,指定为小于或等于4的正整数。该对象计算满足速率和公差属性的系数。

依赖关系

此属性仅在设置时应用规范多项式阶的

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

过滤多项式系数,指定为实值——- - - - - -矩阵,是多项式阶。

该图显示了a的信号流图dsp。FarrowRateConverter对象,其系数设置为[1 2;3 4]

FIR滤波器的每个分支对应于系数矩阵的一行。

依赖关系

此属性仅在设置时应用规范“系数”

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

定点属性

定点运算的舍入方法,指定为字符向量。有关舍入方法的更多信息,请参见舍入模式

定点操作的溢出动作,指定为“包装”“饱和”.有关溢出操作的详细信息,请参见溢出处理

过滤器系数的数据类型,指定为有符号numerictype对象。默认的数据类型是带符号的16位数据numerictype对象。您必须指定numerictype对象,不需要特定的二进制点缩放。为了最大化精度,对象根据系数值确定此数据类型的分数长度。

延迟分数的数据类型,指定为无符号numerictype对象。默认的数据类型是无符号的8位数据numerictype对象。您必须指定numerictype对象,不需要特定的二进制点缩放。为了最大化精度,对象根据延迟分数值确定该数据类型的分数长度。

乘数的数据类型,指定为有符号numerictype对象。默认的数据类型是带符号的16位numerictype具有13位分数长度的对象。您必须指定numerictype具有特定二进制点缩放的对象。

输出的数据类型,指定为以下之一:

  • '与输入字长度相同'-输出字长、分式长度与输入相同。

  • “与累加器相同”-输出字长度和分数长度与累加器相同。

  • numerictypeobject—带符号定点输出数据类型。如果不指定分数长度,对象将根据输入范围计算分数长度。对象保留输入的动态范围。

使用

语法

描述

例子

yfrcx重新取样输入x创建输出y根据定义的速率转换frc

输入参数

全部展开

输入信号,指定为向量或矩阵。的行长x必须是整体抽取因子的倍数。每一栏x被视为一个单独的通道。

输出参数

全部展开

重新采样的信号,作为矢量或矩阵返回。

对象的功能

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

发行版(obj)

全部展开

getPolynomialCoefficients 得到法罗速率转换滤波器的多项式系数
getActualOutputRate 获得实际产出率
getRateChangeFactors 得到整体插值和抽取因子
generatehdl 生成量化DSP滤波器的HDL代码(需要filter Design HDL Coder)
freqz 滤波器的频率响应
fvtool 可视化DSP滤波器的频率响应
信息 filter系统对象信息
成本 估计实现过滤器系统对象的成本
一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 重置系统对象的内部状态

例子

全部展开

请注意:如果您使用的是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具有默认属性的系统对象™。计算并显示频率响应。

frc = sp. farrowrateconverter;[h,f] = freqz(frc);情节(f, 20 * log10 (abs (h))) ylabel (滤波器响应的)包含(“频率(rad / s)”

创建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筛选器使用RoundingModeOverflowMode,CoefficientsDataType属性。FIR滤波器内的累加器和产品使用全精度数据下载188bet金宝搏类型。对象将FIR过滤器的输出强制转换为MultiplicandDataType

参考文献

Hentschel, T.和G. Fettweis。可重构无线电终端中用于采样率转换的连续时间数字滤波器。Frequenz.2001年第55卷5-6期,185-188页。

扩展功能

在R2014b中引入