主要内容

高效的采样率转换之间任意的因素

这个例子展示了如何有效样本率之间任意转换因素。

采样率转换的需要任意因素出现在许多应用程序中(例如符号数字接收机中的同步、语音编码和合成、连续时间系统的计算机模拟,等等)。在这个例子中,我们将研究一个示例polynomial-based和多相滤波器的级联形成一个有效的解决方案时需要把一个信号从8 kHz的采样率44.1 kHz。

单级多相方法

多相结构通常被认为是有效的实现多重速率的过滤器。然而在分级采样率转换的情况下,数量的阶段,因此过滤器的顺序,可以迅速变得过高。重新取样信号从8 kHz到44.1 kHz,我们插入到441年,到80年毁掉(8 * 441/80 = 44.1)。

sampRateConv = dsp.SampleRateConverter (“带宽”,6 e3,“InputSampleRate”,8 e3,“OutputSampleRate”,44.1 e3,“StopbandAttenuation”,50);

这可以通过相对高效的方式在两个阶段:

信息(sampRateConv)
ans = '整体插值系数:441整体力量的因素:80数量的过滤器:2次乘法/输入样本:95.175000的系数:1774过滤器:过滤器1:dsp。FIRRateConverter -插值因素:147 -大量毁灭因素:80过滤器2:dsp。FIRInterpolator -插值因子:3 '
成本(sampRateConv)
ans =结构体字段:NumCoefficients: 1774 NumStates: 30 MultiplicationsPerInputSample: 95.1750 AdditionsPerInputSample: 89.6750

虽然操作每个输入样本的数量是合理的(约95乘法——记住,加息后第一阶段到14.7 kHz), 1774年系数必须存储在内存中。

提供一个输出率宽容

减轻大量的系数的一种方法可能是允许公差在输出采样率如果精确率不是至关重要的。例如,指定公差1%导致44 kHz的输出速率而不是44.1 kHz。现在需要插入和11的毁掉2。它可以有效地完成一个阶段。

sampRateConvWithTol = dsp.SampleRateConverter (“带宽”,6 e3,“InputSampleRate”,8 e3,“OutputSampleRate”,44.1 e3,“StopbandAttenuation”,50岁,“OutputRateTolerance”,0.01);成本(sampRateConvWithTol)
ans =结构体字段:NumCoefficients: 120 NumStates: 12 MultiplicationsPerInputSample: 60 AdditionsPerInputSample: 55

在这种情况下,120需要系数和乘法/输入样本的数量是60。

单级法罗的方法

Polynomial-based过滤器是另一种方法来克服的问题需要存储大量的系数。法罗结构是有效的实现这样的过滤器。

farrowSampRateConv_3rd = dsp.FarrowRateConverter (“InputSampleRate”,8 e3,“OutputSampleRate”,44.1 e3,“PolynomialOrder”3);farrowSampRateConv_4th = dsp.FarrowRateConverter (“InputSampleRate”,8 e3,“OutputSampleRate”,44.1 e3,“PolynomialOrder”4);成本(farrowSampRateConv_3rd)
ans =结构体字段:NumCoefficients: 16 NumStates: 3 MultiplicationsPerInputSample: 71.6625 AdditionsPerInputSample: 60.6375
成本(farrowSampRateConv_4th)
ans =结构体字段:NumCoefficients: 25 NumStates: 4 MultiplicationsPerInputSample: 121.2750 AdditionsPerInputSample: 99.2250

3 rd-order多项式,需要16个系数和66乘法输入样本。四阶多项式提供稍微更好的低通响应以更高的成本:25 121乘法系数和输入样本。

filts = getFilters (sampRateConv);W = linspace (0, 44.1 e3, 2048);%定义频率范围分析Fs1 = 8 e3 * 147;%的等效单级过滤达到3.53 MHzhfvt = fvtool (filts.Stage1 farrowSampRateConv_3rd,farrowSampRateConv_4th,“FrequencyRange”,“指定freq.向量”,“FrequencyVector”W,“Fs”,(Fs1 3 * 3 * Fs1 Fs1),“NormalizeMagnitudeto1”,“上”,“颜色”,“白色”);传奇(hfvt“多相采样率转换器”,“3 rd-order法罗插入器”,“四阶法罗插入器”,“位置”,“东北”)

图级响应(dB)包含一个坐标轴对象。坐标轴对象与标题级响应(dB)包含3线类型的对象。这些对象代表多相采样率转换器,3 rd-order法罗插入器,四阶法罗插入器。

提供一个输出率宽容并不显著影响的实施成本法罗过滤器。然而,它改变了插值和大量毁灭因素同样dsp.SampleRateConverter它。

farrowSampRateConv_4th = dsp.FarrowRateConverter (“InputSampleRate”,8 e3,“OutputSampleRate”,44.1 e3,“PolynomialOrder”4“OutputRateTolerance”,0.01);信息(farrowSampRateConv_4th)
ans =12 x52 char数组的离散时间冷杉多重速率的过滤器(真正的)“- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -“滤波器结构:法罗采样率转换器“插值因素:11“大量毁灭因素:2“过滤器长度:5“稳定:是的“线性相位:没有‘‘算术:双重“输出率公差:1.000000%“调整输出率:44000.000000”
成本(farrowSampRateConv_4th)
ans =结构体字段:NumCoefficients: 25 NumStates: 4 MultiplicationsPerInputSample: 121 AdditionsPerInputSample: 99

级联法罗和冷杉的多相结构

我们现在试着设计一个混合解决方案,该解决方案将利用两种类型的过滤器,我们以前见过。多相滤波器特别适合插值或大量毁灭一个整数因子和分数转换速度当插值和大量毁灭因素较低。法罗滤波器可以有效地实现任意(包括非理性)率变化的因素。首先,我们插入原8 kHz信号4使用一连串的冷杉halfband过滤器。

intSampRateConv = dsp.SampleRateConverter (“带宽”,6 e3,“InputSampleRate”,8 e3,“OutputSampleRate”32 e3,“StopbandAttenuation”,50);信息(intSampRateConv)
ans = '整体插值因子:4整体力量的因素:1的过滤器:1乘法/输入样本:34.000000的系数:34过滤器:过滤器1:dsp。FIRInterpolator -插值因子:4 '

然后,我们插入中间32 kHz信号44.1/32 = 1.378125得到最终所需的44.1千赫采样频率。我们使用一个立方拉格朗日为此polynomial-based过滤器。

farrowSampRateConv = dsp.FarrowRateConverter (“InputSampleRate”32 e3,“OutputSampleRate”,44.1 e3,“PolynomialOrder”3);

整个过滤是通过级联两个过滤器。

成本(intSampRateConv)
ans =结构体字段:NumCoefficients: 34 NumStates: 11 MultiplicationsPerInputSample: 34 AdditionsPerInputSample: 31
成本(farrowSampRateConv)
ans =结构体字段:NumCoefficients: 16 NumStates: 3 MultiplicationsPerInputSample: 17.9156 AdditionsPerInputSample: 15.1594

系数的混合设计的数量相对较低(36)和乘法/输入样本的数量也相对较低:28 + 16 * 4 = 92。这两个设计的组合频率响应优越的farrowSampRateConv_3rdfarrowSampRateConv_4th

[Hsrc f] = freqz (intSampRateConv);Fsfar = 32 e3 * 441;Hfsrc = freqz (farrowSampRateConv f Fsfar);Hhybrid = Hsrc。* Hfsrc;Hhybrid_norm = Hhybrid /规范(Hhybrid正);%为0级dB正常化情节(f, 20 * log10 (abs (Hhybrid_norm)));包含(的频率(赫兹))ylabel (“(dB)级”)传说(结合多相和法罗采样率转换器,“位置”,“东北”)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。该对象代表结合多相和法罗采样率转换器。

我们现在覆盖的频率响应的单级和多级设计。明显的反应是有可比性的。

范围=简介(“SampleRate”,44.1 e3,“PlotAsTwoSidedSpectrum”假的,“YLimits”20 [-80],“ShowLegend”,真的,“ChannelNames”,{“单级设计”,“多阶段设计”});抽搐,toc < 20% 20秒x = randn (8000 1);%转换速率使用多级FIR滤波器日元= sampRateConv (x);%转换速率使用级联的多级冷杉和法罗过滤器ytemp = intSampRateConv (x);y2 = farrowSampRateConv (ytemp);%比较这两种方法的输出范围((y1, y2))结束