主要内容

使用Farrow结构的分数阶延迟滤波器

这个例子展示了如何设计使用法罗结构实现的数字分数延迟滤波器。数字分数延迟滤波器是微调信号采样瞬时的有用工具。例如,它们通常在数字调制解调器的同步中发现,其中延迟参数随时间变化。这个例子演示了Farrow结构,一种实现时变FIR分数延迟滤波器的流行方法。

理想分数阶延迟滤波器

理想的分数阶延迟滤波器是线性相位全通滤波器。它的脉冲响应是一个时移离散sinc函数,对应于一个非因果滤波器。由于脉冲响应是无穷大的,它不能通过有限的时间移动而产生因果关系。因此,它是不可能实现的,必须接近。

法罗结构

为了计算分数延迟滤波器的输出,我们需要估计输入信号在现有离散时间样本之间的值。特殊的插值滤波器可以用来计算任意点的新采样值。其中,基于多项式的滤波器特别有趣,因为一个特殊的结构-法罗结构-允许简单的系数处理。特别是,Farrow结构的可调性使其非常适合于实际的硬件实现。

最大平坦FIR逼近(拉格朗日插值)

拉格朗日插值是一种时域方法,它导致基于多项式的滤波器的一种特殊情况。输出信号近似于次多项式.最简单的情况(=1)对应线性插值。让我们设计并分析一个线性分式延迟滤波器,将单位延迟分成不同的分式:

Nx = 1024;Nf = 5;yw = 0 (Nx、Nf);transferFuncEstimator = dsp。TransferFunctionEstimator (...“SpectralAverages”25岁的“FrequencyRange”“单向的”);arrPlotPhaseDelay = dsp。ArrayPlot (“PlotType”“行”“YLimits”, 1.5 [0],...“YLabel”的相位延迟“SampleIncrement”, 1/512);arrPlotMag = dsp。ArrayPlot (“PlotType”“行”“YLimits”, -10年[1],...“YLabel”“(dB)级”“SampleIncrement”, 1/512);fracDelay = dsp.VariableFractionalDelay;xw = randn (Nx、Nf);transferFuncEstimator (xw yw);w = getFrequencyVector (transferFuncEstimator, 2 *π);w = repmat (w 1 Nf);抽搐,toc < 2 yw = fracDelay(xw,[0 0.2 0.4 0.6 0.8]);H = transferFuncEstimator (xw yw);arrPlotMag (20 * log10 (abs (H))) arrPlotPhaseDelay(角(H) / w)。结束发行版(fracDelay)发布(transferFuncEstimator)发布(arrPlotMag)

发行版(arrPlotPhaseDelay)

对于延迟的任意值,理想的滤波器应该同时具有平坦的幅值响应和平坦的相位延迟响应。这种近似只适用于最低频率。这意味着在实践中,信号需要过采样,线性分数阶延迟才能正常工作。在这里,您将两个不同的分数延迟应用到一个正弦波,并使用时间作用域覆盖原始正弦波和两个延迟版本。在1000hz的采样率下,0.2个样本的延迟对应0.2 ms的延迟。

范围= timescope (“SampleRate”, 1000,...“YLimits”[1],...“时间间隔”只有,...“TimeSpanOverrunAction”“滚动”);正弦= dsp。SineWave (“频率”, 50岁,“SamplesPerFrame”Nx);抽搐,Toc < 2 x = sin ();y = fracDelay (x)。2。8]);延迟0.2毫秒和0.8毫秒范围([x, y (: 1), y (:, 2)))结束发布(fracDelay)发布(范围);

可以设计高阶拉格朗日插补器。让我们来比较一下三次拉格朗日插值器和线性拉格朗日插值器:

farrowFracDelay = dsp。VariableFractionalDelay (...“InterpolationMethod”“法罗”“MaximumDelay”, 1025);Nf = 2;yw = 0 (Nx、Nf);xw = randn (Nx、Nf);H = transferFuncEstimator (xw yw);w = getFrequencyVector (transferFuncEstimator, 2 *π);w = repmat (w 1 Nf);抽搐,toc < 2运行2秒yw (: 1) = fracDelay (xw (: 1), 0.4);延迟0.4毫秒yw (:, 2) = farrowFracDelay (xw (:, 2), 1.4);延迟1.4毫秒H = transferFuncEstimator (xw yw);arrPlotMag (20 * log10 (abs (H))) arrPlotPhaseDelay(打开(角(H)) / w)。结束发行版(fracDelay)发布(transferFuncEstimator)发布(arrPlotMag)

发行版(arrPlotPhaseDelay)

当使用拉格朗日近似时,增加多项式的阶数略微增加有用带宽。微分滤波器的长度,即脉冲响应的片段数(“系数”属性的行数)等于多项式的长度(“系数”属性的列数)。其他的设计方法可以用来克服这个限制。还要注意三阶滤波器的相位延迟是如何在直流下从0.4样本移到1.4样本的。由于三次拉格朗日插值器是一个三阶滤波器,它能达到的最小延迟是1。因此,在本例中请求的延迟是1.4 ms而不是0.4 ms。

正弦= dsp。SineWave (“频率”, 50岁,“SamplesPerFrame”Nx);抽搐,Toc < 2 x = sin ();日元= fracDelay (x, 0.4);y2 = farrowFracDelay (x, 1.4);范围([x, y1, y2])结束发布(fracDelay)发布(范围);

时变分数延迟

Farrow结构比Direct-Form FIR的优势在于它的可调性。在许多实际应用中,延迟是时变的。对于每个新的延迟,我们在Direct-Form实现中需要一组新的系数,但在Farrow实现中,多项式系数保持不变。

抽搐,Toc < 5 x = sin ();如果Toc < 1 delay = 1;elseifToc < 2 delay = 1.2;elseifToc < 3 delay = 1.4;elseifToc < 4 delay = 1.6;其他的延迟= 1.8;结束y = farrowFracDelay (x,延迟);范围((x, y))结束发布(fracDelay)发布(范围);

相关的话题

Baidu
map