主要内容

dsp。FarrowRateConverter

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

描述

dsp。FarrowRateConverterSystem object™实现了一个使用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 (傅氏国际fsOut托尔np返回一个采样率转换器系统对象,frc,InputSampleRate属性设置为傅氏国际OutputSampleRate属性设置为fsOutOutputRateTolerance属性设置为托尔,PolynomialOrder属性设置为np

属性

全部展开

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

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

有关更改属性值的详细信息,请参见利用系统对象在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对象,没有特定的二值点缩放。为了最大化精度,对象根据系数值确定此数据类型的分数长度。

分数延迟的数据类型,指定为unsignednumerictype对象。默认数据类型为无符号8位numerictype对象。您必须指定numerictype对象,没有特定的二值点缩放。为了最大化精度,对象根据分数延迟值确定此数据类型的分数长度。

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

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

  • '与输入相同的单词长度'—输出字长和分数长度与输入相同。

  • “与蓄电池相同”—输出字长和分数长度与累加器相同。

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

使用

语法

描述

例子

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

输入参数

全部展开

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

输出参数

全部展开

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

对象的功能

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

发行版(obj)

全部展开

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

例子

全部折叠

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

注意:dsp。AudioFileWriter中不支持系统对象™金宝appMATLAB在线

创建一个dsp。FarrowRateConverter系统对象™转换音频信号从44.1千赫到96千赫。设置过滤器的多项式阶。

FsIn = 44.13;FsOut = 96e3;LagrangeOrder = 2;% 1 =线性插值FRC = dsp。FarrowRateConverter (“InputSampleRate”傅氏国际,“OutputSampleRate”FsOut,“PolynomialOrder”, LagrangeOrder);Ar = dsp。AudioFileReader (“guitar10min.ogg”“SamplesPerFrame”, 14700);Aw = dsp。AudioFileWriter (“guitar10min_96kHz.wav”“SampleRate”, FsOut);

检查结果的插值和抽取因子。

[interp,decim] = getRateChangeFactors(frc)
Interp = 320
Decim = 147

显示对象用来拟合输入样本的多项式。

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

释放dsp。AudioFileWriter系统对象™来完成输出文件的创建。

发布(aw)发布(ar)

绘制输入和输出信号。法罗速率转换器的延迟在输出信号中引入了延迟。

tx = (0:length(x)-1)./FsIn;ty = (0:length(y)-1)./FsOut;图subplot(2,1,1) plot(tx,x(:,1),“。”)举行情节(泰,y (: 1),“——”) xlim([0.0.005]) xlabel(“时间(s)”)传说(输入样本的的输出样本“位置”“最佳”)标题(通道1的) subplot(2,1,2) plot(tx,x(:,2),“。”)举行情节(泰,y (:, 2),“——”) xlim([0.0.005]) xlabel(“时间(s)”)传说(输入样本的的输出样本“位置”“最佳”)标题(通道2的

图中包含2个轴对象。标题为Channel 1的轴对象1包含2个类型为line的对象。这些对象表示输入样本,输出样本。标题为Channel 2的坐标轴对象2包含2个类型为line的对象。这些对象表示输入样本,输出样本。

使用outputDelay函数来确定此延迟值。要考虑此延迟,请将输出移动此延迟值。

[delay,~,~] = outputDelay(frc,Fc=0)
延迟= 4.5351e-05
tx = (0:length(x)-1)./FsIn;ty = (0:length(y)-1)./FsOut;图subplot(2,1,1) plot(tx,x(:,1),“。”)举行情节(ty-delay, y (: 1),“——”) xlim([0.0.005]) xlabel(“时间(s)”)传说(输入样本的的输出样本“位置”“最佳”)标题(通道1的) subplot(2,1,2) plot(tx,x(:,2),“。”)举行情节(ty-delay, y (:, 2),“——”) xlim([0.0.005]) xlabel(“时间(s)”)传说(输入样本的的输出样本“位置”“最佳”)标题(通道2的

图中包含2个轴对象。标题为Channel 1的轴对象1包含2个类型为line的对象。这些对象表示输入样本,输出样本。标题为Channel 2的坐标轴对象2包含2个类型为line的对象。这些对象表示输入样本,输出样本。

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

图subplot(2,1,1) plot(tx,x(:,1),Color=[0.6 0.6 0.6]) hold情节(tx, x (: 1),“罗”)情节(ty-delay y (: 1),“b”。) xlim([0.0105 0.0107])传说(“插入输入”输入样本的的输出样本)标题(通道1的次要情节(2,1,2)情节(tx, x(:, 2),颜色= [0.6 0.6 0.6])情节(tx, x (:, 2),“罗”)情节(ty-delay y (:, 2),“b”。) xlim([0.0105 0.0107])传说(“插入输入”输入样本的的输出样本)标题(通道2的

图中包含2个轴对象。标题为Channel 1的轴对象1包含3个类型为line的对象。这些对象表示插值输入,输入样本,输出样本。标题为Channel 2的坐标轴对象2包含3个类型为line的对象。这些对象表示插值输入,输入样本,输出样本。

创建一个dsp。FarrowRateConverter0公差的系统对象™。输出速率等于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。outputratettolerance = 0.01;FsOut2 = getActualOutputRate(frc)
FsOut2 = 4.4308e+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.FarrowRateConverter;成本(frc)
中科=带有字段的结构体:NumCoefficients: 16 NumStates: 3 MultiplicationsPerInputSample: 14.1497 AdditionsPerInputSample: 11.9728

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

frc。outputratettolerance = 0.1;成本(frc)
ctl =带有字段的结构体:NumCoefficients: 16 NumStates: 3 MultiplicationsPerInputSample: 13 AdditionsPerInputSample: 11

更多关于

全部展开

算法

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

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

你可以使用任意阶的多项式来拟合现有的样本。然而,由于大阶多项式经常振荡,因此在实践中使用1、2、3或4阶多项式。

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

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

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

  • 输出是乘法结果的和。

参考文献

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

扩展功能

版本历史

在R2014b中引入