主要内容

dsp。FarrowRateConverter

任意转换因子多项式采样率转换器

描述

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

转换信号的采样率:

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

  2. 使用参数调用对象,就像调用函数一样。

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

创造

描述

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

例子

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

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

frc=dsp.FarrowRateConverter(fsInfsOut托尔np返回一个采样率转换器系统对象,frc,InputSampleRate属性设置为fsInOutputSampleRate属性设置为fsOutOutputRateTolerance属性设置为托尔,PolynomialOrder属性设置为np

性质

全部展开

除非另有说明,否则属性为不能,这意味着您在调用对象后无法更改其值。对象在调用时锁定,并且释放函数打开它们。

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

有关更改特性值的详细信息,请参见在MATLAB中使用系统对象进行系统设计

过滤性能

输入信号的采样率,指定为Hz的正标量。输入采样率必须大于所关心的带宽。

数据类型:仅有一个的|双重的|int8|int16|int32|int64|uint8|uint16|uint32|uint64

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

数据类型:仅有一个的|双重的|int8|int16|int32|int64|uint8|uint16|uint32|uint64

输出采样率的最大公差,指定为0到0.5(含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

输入参数

全部展开

输入信号,指定为向量或矩阵。输入的每一列都被视为一个单独的通道。

输出参数

全部展开

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

对象的功能

要使用对象函数,请指定System对象作为第一个输入参数。例如,释放名为system的对象的系统资源obj,使用下面的语法:

发行版(obj)

全部展开

GetPolynomial系数 得到法罗速率转换滤波器的多项式系数
getActualOutputRate 获取实际输出率
getRateChangeFactors 得到整体插值和抽取因子
generatehdl 生成量化DSP滤波器的HDL代码(需要)滤波器设计HDL编码器
freqz 离散时间滤波器的频率响应系统对象
fvtool 显示DSP滤波器的频率响应
信息 信息过滤系统对象
成本 估计实现过滤器的成本系统对象
系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 使内部状态复位系统对象

例子

全部折叠

请注意:如果你正在使用R2016a或更早的版本,将每个对对象的调用替换为等价的语法。例如,obj(x)就变成了步骤(obj, x)

注意:dsp。音频文件编写器中不支持系统对象™金宝appMATLAB在线

创建一个dsp。FarrowRateConverter系统对象™转换音频信号从44.1 kHz到96 kHz。设置滤波器的多项式顺序。

fs1 = 44.1 e3;fs2 = 96年e3;LagrangeOrder = 2;% 1 =线性插值frc = dsp。FarrowRateConverter (“InputSampleRate”,fs1,...“输出采样器”,fs2,...“多项式序”, LagrangeOrder);基于“增大化现实”技术= dsp。AudioFileReader (“guitar10min.ogg”“SamplesPerFrame”, 14700);aw = dsp。AudioFileWriter (“guitar10min_96kHz.wav”“采样器”, fs2);

检查得到的插值和抽取因子。

[插值函数,decim] = getRateChangeFactors (frc)
插值函数= 320
decim = 147

显示对象用来匹配输入样本的多项式。

多项式系数= getPolynomialCoefficients (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);aw(y);结束

释放音频文件编写器系统对象™以完成输出文件的创建。

发布(aw)发布(ar)

绘制第100帧数据的输入和输出信号。延迟输入以补偿滤波器的延迟。

t1 = 0:1 / fs1:1/30-1 / fs1;t2 = 0:1 / fs2:1/30-1 / fs2;延迟=装天花板((LagrangeOrder + 1) / 2) / fs1;el1 = 1:长度(t1)延迟;el2 = 1:长度(t2);el2(1:延迟)= [];图subplot(2,1,1) plot(t1(1:length(el1)),x(el1,1)) hold情节(t1(1:长度(el1)), x (el1, 2))包含(“时间(s)”)头衔(的输入通道)子地块(2,1,2)图(t2(1:长度(el2)),y(el2,1))保持情节(t2(1:长度(el2)), y (el2, 2))包含(“时间(s)”)头衔(“输出通道”

图中包含2个轴对象。标题为“输入通道”的轴对象1包含2个类型为line的对象。标题为“输出通道”的轴对象2包含2个类型为line的对象。

放大以查看抽样率的差异。

图次要情节(2,1,1)情节(t1(1:长度(el1)), x (el1, 1),“啊——”)举行情节(t2(1:长度(el2)), y (el2, 1),“d——”) xlim([0.0104 0.0107]) title(“第一频道”)包含(“时间(s)”)传奇(“输入”“输出”次要情节(2,1,2)情节(t1(1:长度(el1)), x (el1, 2),“啊——”)举行情节(t2(1:长度(el2)), y (el2, 2),“d——”)xlim([0.0104 0.0107])xlabel(“时间(s)”)头衔(“第二频道”)传奇(“输入”“输出”

图中包含2个轴对象。标题为First Channel的轴对象1包含2个类型为line的对象。这些对象表示输入、输出。标题为Second Channel的轴对象2包含2个类型为line的对象。这些对象表示输入、输出。

创建一个dsp。FarrowRateConverter系统对象™具有0%的容忍。输出速率等于OutputSampleRate财产.输入大小必须是抽取因子的倍数,.这里M等于320。

frc = dsp。FarrowRateConverter (“InputSampleRate”,96e3,...“输出采样器”44.1 e3);FsOut = getActualOutputRate (frc)
FsOut = 44100
[L, M] = getRateChangeFactors (frc)
L = 147
M=320

允许输出速率有1%的公差,并观察抽取因子的差异。

frc。OutputRateTolerance = 0.01;FsOut2 = getActualOutputRate (frc)
FsOut2 = 4.4308 e + 04
[L2,M2]=getRateChangeFactors(frc)
L2 = 6
M2=13

抽取系数现在只有13。抽取因子越低,输入的灵活性越大。输出速率在该范围内OutputSampleRate ± 1%.

创建一个dsp。FarrowRateConverter具有默认属性的系统对象™。计算和显示频率响应。

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

图中包含一个轴对象。axis对象包含一个类型为line的对象。

创建一个dsp.FarrowRateConverter系统对象™ 使用默认值。确定其计算成本:系数数、状态数、每个输入样本的乘法和每个输入样本的加法。

frc=dsp.FarrowRate转换器;cst=成本(frc)
中科=结构体字段:NumCoefficients: 16 NumStates: 3 MultiplicationsPerInputSample: 14.1497 AdditionsPerInputSample: 11.9728

重复计算,允许输出采样率有10%的误差。

frc。OutputRateTolerance = 0.1;ctl =成本(frc)
ctl=结构体字段:NumCoefficients:16个NumStates:3乘法PRinputSample:13加法PRinputSample:11

算法

法罗滤波器使用霍纳规则实现分段多项式插值,从多项式中计算样本。用于拟合输入样本的多项式系数对应于拉格朗日插值系数。

一旦多项式与输入数据拟合,多项式的值就可以在任何点计算出来。因此,多项式滤波器可以在输入样本之间的任意位置进行插值。

你可以使用任意顺序的多项式来适应现有的样本。然而,由于大阶多项式经常振荡,所以实际中使用1、2、3或4阶多项式。

该块仅通过改变分数延迟来计算所需位置处的插值,µ。此值是上一个输入样本和当前输出样本之间的间隔。所有滤波器系数保持不变。

  • 输入样本使用+ 1 FIR滤波器,其中是多项式阶的。

  • 这些滤波器的输出乘以分数延迟,µ

  • 输出是乘法结果的和。

参考文献

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

扩展能力

介绍了R2014b