主要内容

dsp。FIRRateConverter

采样率转换器

描述

dsp。FIRRateConverterSystem object™通过一个有理数因子对一个矢量或矩阵输入执行采样率转换。FIR速率转换器级联一个插值器与一个抽取器。速率转换器(如图所示)在概念上由上采样器组成,然后是组合抗成像和抗混叠FIR滤波器,然后是下采样器。FIR滤波器的抗成像和抗混叠系数可以通过分子属性,也可以由对象使用designMultirateFIR函数。使用示例请参见使用FIR速率转换器重新采样信号

上采样器将信号的采样率提高一个系数l下采样器将信号的采样率降低一个系数.使用相对素数或素数的上采样和下采样因子。得到的离散时间信号的采样率为L / M乘以原始采样率。

FIR速率转换器包含一个上采样器,后接一个抗成像、抗混叠FIR滤波器,后接一个下采样器。

注意,实际的对象算法实现了多相结构,这是图中所描述的组合系统的有效等效。有关详细信息,请参见算法

执行采样率转换:

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

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

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

创建

描述

例子

firrc= dsp。FIRRateConverter返回一个FIR采样率转换器对象,其插值因子为3,抽取因子为2。设计FIR滤波器系数designMultirateFIR (2)函数。

firrc= dsp。FIRRateConverter (l返回带有整数值的FIR采样率转换器InterpolationFactor属性设置为lDecimationFactor属性设置为.对象根据您在创建对象时指定的速率转换因子设计其筛选器系数designMultirateFIR (L, M)函数。所设计的滤波器对应于归一化截止频率不大于的低通分钟(π/ L,π/米)以径向频率为单位。

firrc= dsp。FIRRateConverter (l“汽车”返回一个FIR采样率转换器,其中NumeratorSource属性设置为“汽车”.在此模式下,每次在速率转换因子中有更新时,对象使用中指定的设计方法重新设计滤波器DesignMethod

例子

firrc= dsp。FIRRateConverter (l全国矿工工会返回FIR采样率转换器InterpolationFactor属性设置为l,DecimationFactor属性设置为,和分子属性设置为全国矿工工会

firrc= dsp。FIRRateConverter (l方法返回FIR采样率转换器InterpolationFactor属性设置为l,DecimationFactor属性设置为,和DesignMethod属性设置为方法.当您将设计方法作为输入传递时NumeratorSource属性自动设置为“汽车”

firrc= dsp。FIRRateConverter (___名称,值返回FIR采样率转换器,其中每个指定属性设置为指定值。将每个属性名称用引号括起来。您可以将此语法用于任何先前的输入参数组合。

例子:firrc = dsp.FIRRateConverter('FullPrecisionOverride','false')允许通过单个定点属性设置控制定点数据类型。

firrc= dsp。FIRRateConverter (l“遗产”返回FIR采样率转换器,其中滤波器系数设计使用Firpm (70,[0 0.28 0.32 1],[1 1 0 0]).所设计滤波器的截止频率为π/3弧度/采样。

属性

全部展开

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

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

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

插值因子l,指定为正整数。

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

大量毁灭的因素,指定为正整数。

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

FIR滤波器系数源,指定为下列之一:

  • “属性”——分子系数通过分子财产。

  • “汽车”——分子系数采用设计方法自动设计DesignMethod

FIR滤波器的分子系数,指定为幂的行向量z1

下式定义了滤波器的传递函数:

H z = n = 0 N b n z n

向量b= (b(0)b(1)、…b(N)]表示滤波器系数向量。

使用归一化截止频率不大于的低通分钟(1 / L, 1 /米),在那里l插值因子是和吗是抽取因子。低通滤波器的增益应该相等l,即插值因子。选择滤波器的长度为插值因子的倍数。要设计这样的过滤器,请使用designMultirateFIR函数。使用示例请参见使用FIR速率转换器重新采样信号.所有初始滤波器状态都为零。

依赖关系

此属性仅在设置时可见NumeratorSource“属性”

NumeratorSource设为“汽车”中规定的设计方法自动重新设计分子系数DesignMethod.要在自动设计模式下访问过滤器系数,请键入objName。分子在MATLAB中®命令提示符。

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

FIR滤波器系数的设计方法,指定为下列之一:

  • “皇帝”——凯撒法。的近似组合抗混叠和抗成像低通滤波器designMultirateFIR函数。

  • “ZOH”——零订单保持方法。保持输入序列值。

  • “线性”——线性插值法。

依赖关系

属性时,此属性才可见NumeratorSource财产“汽车”,或者如果你通过了“汽车”关键字作为创建对象时的输入。

定点属性

指定是否使用全精度规则。如果你设置FullPrecisionOverride真正的(默认值),对象使用全精度规则计算所有内部算术和输出数据类型。这些规则提供了最精确的定点数字。它还关闭其他定点属性的显示,因为它们不能单独应用。这些规则保证在对象内不会发生量化。根据需要添加位,以确保不会发生舍入或溢出。如果你设置FullPrecisionOverride,定点数据类型通过单个定点属性设置进行控制。有关更多信息,请参见定点系统对象的全精度

将舍入方法指定为|之一天花板|收敛|地板上|最近的||简单的||.

依赖关系

此属性仅在对象未处于完全精度模式时应用。

指定溢出动作为|之一包装|饱和|.

依赖关系

此属性仅在对象未处于完全精度模式时应用。

指定过滤器系数定点数据类型为|之一与输入相同的字长|自定义|.

指定过滤系数定点类型为anumerictype(定点设计师)对象Signedness汽车

依赖关系

此属性仅在CoefficientsDataType属性是自定义

将产品定点数据类型指定为|之一完整的精度|和输入一样|自定义|.

将产品定点类型指定为缩放后的numerictype(定点设计师)对象Signedness汽车

依赖关系

此属性仅在ProductDataType属性是自定义

指定累加器定点数据类型为|之一完整的精度|和产品一样|和输入一样|自定义|.

将累加器定点类型指定为缩放后的numerictype(定点设计师)对象Signedness汽车

依赖关系

此属性仅在AccumulatorDataType属性是自定义

将输出定点数据类型指定为|之一与蓄电池相同|和产品一样|和输入一样|自定义|.

将输出定点类型指定为缩放后的numerictype(定点设计师)对象Signedness汽车

依赖关系

此属性仅在OutputDataType属性是自定义

使用

语法

描述

例子

y= firrc (x重新采样输入x并返回重新采样的信号y

输入参数

全部展开

数据输入,指定为列向量或矩阵。输入行数P必须是抽取因子的倍数.一个P——- - - - - -矩阵输入被视为独立的通道。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|fi
复数支持:金宝app是的

输出参数

全部展开

重新采样的输出,作为列向量或矩阵返回。输出信号中的行数由PL/,在那里P是输入行数,l是插值因子,和是抽取因子。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|fi
复数支持:金宝app是的

对象的功能

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

发行版(obj)

全部展开

freqz 离散时间滤波器的频率响应系统对象
fvtool 可视化DSP滤波器的频率响应
信息 过滤器信息系统对象
成本 估计实现过滤器的成本系统对象
多项式系数 返回过滤器。系统对象结构系数
多相 多速率滤波器的多相分解
generatehdl 生成量化DSP滤波器的HDL代码(要求)滤波器设计HDL编码器
一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特性
重置 的内部状态复位系统对象

例子

全部折叠

以3/2的倍数重新采样100hz正弦波信号。

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

创建一个dsp。SineWave对象,每帧产生54个采样的正弦信号,包含100 Hz的音调,采样率为1250 Hz。

sin = dsp。SineWave(1,100,“SampleRate”, 1250,“SamplesPerFrame”54);%抓取一个帧X = sin ();计算输入时间向量tx = (0:length(x)-1)/sin . samplerate;

设计默认过滤器

创建一个dsp。FIRRateConverter对象。该对象使用组合抗成像和抗混叠FIR滤波器。默认情况下,此过滤器是使用designMultirateFIR函数。该函数根据您指定的速率转换因子设计过滤器,并将系数存储在分子财产。当插值因子为3,抽取因子为2时,对象用designMultirateFIR (2)

firrc = dsp.FIRRateConverter(3,2);

以3/2的倍数重新采样

对信号以3/2的倍数重新采样。

Y = firrc(x);

绘制原始和重新采样的信号。为了将两个信号绘制在同一张图上,得到时间仿射变换参数。使用这些参数来计算输出样本时间。的 n th 输出采样时间等于 规模 × n + 延迟 .由于转化率为3/2,输入和输出值每3个输出样本和每其他输入样本重合。

scale = firrc.InterpolationFactor/firrc.DecimationFactor;delay = length(firrc.Numerator)/(2*firrc.DecimationFactor);计算输入单位中向量y的输出次数ty = (((0:length(y)-1)-delay)/scale)/sin . samplerate;茎(tx, x,“填充”, MarkerSize = 4);持有;茎(泰,y);持有;Xlim ([0.0 0.0145]) ylim([-1.5 1.5]) legend(原始输入的重新取样的);

图包含一个轴对象。axis对象包含2个类型为stem的对象。这些对象表示原始输入,重新采样。

在自动滤波器设计模式下,以5/3的系数重新采样

现在将插值因子更改为5,将抽取因子更改为3。为了使滤波器设计根据新的速率转换因子自动更新,请设置NumeratorSource财产“汽车”.或者,您可以传递关键字“汽车”作为创建对象时的输入。然后,对象在自动过滤设计模式下运行。每当速率转换因子发生变化时,对象就会相应地更新滤波器设计。

(firrc) firrc发布。NumeratorSource =“汽车”;firrc。InterpolationFactor = 5;firrc。抽取因子= 3
Firrc = dsp。FIRRateConverter与属性:InterpolationFactor: 5 DecimationFactor: 3 NumeratorSource: 'Auto' DesignMethod: 'Kaiser'显示所有属性

要在自动过滤器设计模式下访问过滤器系数,请键入firrc。Numerator在MATLAB命令提示符中。

用更新的速率转换值重新采样信号。

yAuto = firrc(x);

绘制原始和重新采样的信号。重新计算时间仿射变换参数,因为速率转换因子发生了变化。注意,由于5/3转换因子,输入和输出每3个输入样本和5个输出样本重合。

scale = firrc.InterpolationFactor/firrc.DecimationFactor;delay = length(firrc.Numerator)/(2*firrc.DecimationFactor);计算输入单位中向量yAuto的输出次数tyAuto = (((0:length(yAuto)-1)-delay)/scale)/sin . samplerate;茎(tx, x,“填充”, MarkerSize = 4);持有;茎(tyAuto yAuto,“r”);持有;Xlim ([0.0 0.015]) ylim([-1.5 1.5]) legend(原始输入的重新取样的);

图包含一个轴对象。axis对象包含2个类型为stem的对象。这些对象表示原始输入,重新采样。

指定信号插值模型

在自动设计模式下,还可以通过指定底层的D/A信号插值模型DesignMethod财产。

DesignMethod“线性”将插值因子改为11。

(firrc) firrc发布。DesignMethod =“线性”;firrc。InterpolationFactor = 11;

使用线性插值模型重新采样信号。

yLinear = firrc(x);

绘制原始和重新采样的信号。输出样本位于分段线性曲线上。注意,输入和输出每3个输入样本和每11个输出样本都符合比值11/3。

scale = firrc.InterpolationFactor/firrc.DecimationFactor;delay = (length(firrc.Numerator)-1)/(2*firrc.DecimationFactor);计算输入单位中向量yLinear的输出次数tyLinear = (((0:length(yLinear)-1)-delay)/scale)/sin . samplerate;茎(tx, x,“填充”, MarkerSize = 4);持有;茎(tyLinear yLinear);plot(tyLinear, yLinear,Color=[1 0 0 0.3]);持有;Xlim ([0.0 0.009]) ylim([-1.5 1.5]) legend(原始输入的重新取样的);

图包含一个轴对象。轴类对象包含轴类、线类3个对象。这些对象表示原始输入,重新采样。

重新采样的音频信号从48千赫到44千赫和播放重新采样的信号使用audioDeviceWriter对象。

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

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

创建一个dsp。一个udioFileReader对象。该对象读取采样率为48 kHz的音频文件。

L = 11;M = 12;Afr = dsp。一个udioFileReader(“audio48kHz.wav”“OutputDataType”“单一”“SamplesPerFrame”4 *米);

创建一个dsp。FIRRateConverter插值因子为的对象l= 11,抽取因子为= 12(比例的协素数表示 44 k / 48 k ),是标准44.1 kHz速率的合理近似值。对象使用来设计过滤器designMultirateFIR(11、12)把系数存储在分子属性。

firrc = dsp.FIRRateConverter(L,M)
Firrc = dsp。FIRRateConverter with properties: InterpolationFactor: 11 DecimationFactor: 12 NumeratorSource: 'Property' Numerator: [0 2.3076e-05 5.4790e-05 9.3620e-05 1.3665e-04…]显示所有属性

创建一个audioDeviceWriter对象。设置采样率为44100hz。

adw = audioDeviceWriter(44100);

读取音频文件,转换音频信号的采样率,并播放重新采样的音频。

~isDone(afr) audio1 = afr();Audio2 = firrc(audio1);adw (audio2);结束释放(误判率);释放(adw);

算法

采用多相结构有效地实现了FIR速率变换器。

为了推导多相结构,从FIR滤波器的传递函数开始:该FIR滤波器是一个组合的抗成像和抗混叠滤波器。

H z = b 0 + b 1 z 1 + + b N z N

N+1是FIR滤波器的长度。

你可以将这个等式重新排列如下:

H z = b 0 + b l z l + b 2 l z 2 l + .. + b N l + 1 z N l + 1 + z 1 b 1 + b l + 1 z l + b 2 l + 1 z 2 l + .. + b N l + 2 z N l + 1 + z l 1 b l 1 + b 2 l 1 z l + b 3. l 1 z 2 l + .. + b N z N l + 1

l是多相分量的个数,它的值等于您指定的插值因子。

你可以把这个方程写成:

H z = E 0 z l + z 1 E 1 z l + + z l 1 E l 1 z l

E0(zlE1(zl、……El - 1(zlFIR滤波器是多相元件吗H(z)。

从概念上讲,FIR速率转换器包含一个上采样器,然后是一个组合的抗成像、抗混叠FIR滤波器H(z),之后是下采样器。

FIR速率转换器包含一个上采样器,然后是一个组合抗成像、抗混叠FIR滤波器,然后是一个下采样器。

取代H(z)及其多相表示。

这是插值的多速率高贵恒等式。

对插值应用高贵恒等式将上采样操作移到滤波操作之后。这一举动使您能够以较低的速率过滤信号。

你可以用换向开关代替上采样运算符、延迟块和加法器。为了考虑随后的下采样器,开关按大小的步骤移动.开关从支路0接收第一个采样,顺时针方向移动,每次跳变−1分支。

作为一个例子,考虑一个带有l设置为5和设置为3。多相分量为E0(z)E1(z)E2(z)E3.(z),E4(z).开关从第一个支路0开始,跳过支路1和2,从支路3接收下一个样本,然后跳过支路4和0,从支路2接收下一个样本,以此类推。交换机接收数据样本的支路顺序为[0,3,1,4,2,0,3,1,....]。

速率转换器实现l/首先应用插值因子进行转换l对输入的数据,使用换向器开关端只接收1进采样,有效地考虑了降采样因子.因此,FIR速率转换器输出端的采样率为Lfs / M

扩展功能

定点转换
使用定点设计器™设计和模拟定点系统。

在R2012a中引入