主要内容

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

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

理想的分数延迟过滤器

理想的分数延迟滤波器是线性相的Allpass滤波器。它的脉冲响应是与非因果过滤器相对应的时间变化的离散SINC函数。由于脉冲响应是无限的,因此无法通过有限的时间变化使其因果关系。因此,它是不可实现的,必须近似。

Farrow结构

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

最大弹性FIR近似(拉格朗日插值)

拉格朗日插值是一种时间域方法,可导致基于多项式过滤器的特殊情况。输出信号用多项式近似m。最简单的情况(m= 1)对应于线性插值。让我们设计和分析一个线性分数延迟过滤器,该过滤器将将单位延迟按各种分数分开:

nx = 1024;nf = 5;yw = zeros(nx,nf);Transferfuncestimator = DSP.TransferFunctionEstimator(...“光谱”,25,'频率范围',,,,'片面');ARRPLOTPHASEDELAY = DSP.ARRAYPLOT(“ plottype',,,,'线',,,,'ylimits',[0 1.5],...'ylabel',,,,“相延迟”,,,,“样品灌输”,1/512);arrplotmag = dsp.ArrayPlot(“ plottype',,,,'线',,,,'ylimits',[-10 1],,...'ylabel',,,,“大小(db)”,,,,“样品灌输”,1/512);fracdelay = dsp.VariableFractionalDelay;xw = randn(nx,nf);Transferfuncestimator(XW,YW);w = getFrequencyVector(TransferFuncestimator,2*pi);w = repmat(w,1,nf);tic,尽管toc <2 yw = fracdelay(xw,[0 0.2 0.4 0.6 0.6 0.8]);H = TransferFuncestimator(XW,YW);arrplotmag(20*log10(abs(h)))arrplotphasedelay(-angle(h)./ w)结尾版本(Fracdelay)版本(TransferFuncestimator)版本(ARRPLOTMAG)

释放(arrplotphasedelay)

对于延迟的任何值,理想的滤波器应具有平坦的幅度响应和扁平相延迟响应。近似仅适用于最低频率。这意味着在实践中,对于线性分数延迟才能正确工作,需要对信号进行过多采样。在这里,您可以在正弦波中应用两个不同的分数延迟,并使用时间范围覆盖原始的正弦波和两个延迟版本。样品速率为1000 Hz的0.2样品延迟,对应于0.2 ms。

范围= timescope('采样率',1000,...'ylimits',[-1 1],...'时间跨度',.02,...“ timespanoverrunaction”,,,,'滚动');正弦= DSP.SineWave('频率',50,“ SampleSperFrame”,nx);tic,尽管toc <2 x = sine();y = fracdelay(x,[。2.8]);延迟%延迟0.2毫秒,0.8毫秒范围([x,y(:,1),y(:,2)])结尾释放(fracdelay)版本(范围);

可以设计高阶拉格朗日插值器。让我们将立方拉格朗日插值器与线性比较:

farrowfracdelay = dsp.VaribleFractionalDelay(...“插值仪”,,,,'farrow',,,,“最大值”,1025);nf = 2;yw = zeros(nx,nf);xw = randn(nx,nf);H = TransferFuncestimator(XW,YW);w = getFrequencyVector(TransferFuncestimator,2*pi);w = repmat(w,1,nf);tic,尽管TOC <2%运行2秒yw(:,1)= fracdelay(xw(:,1),0.4);%延迟限制为0.4 msyw(:,2)= farrowfracdelay(xw(:,2),1.4);%延迟1.4毫秒H = TransferFuncestimator(XW,YW);arrplotmag(20*log10(abs(h)))arrplotphasedelay(-unwrap(angle(h))./ w)结尾版本(Fracdelay)版本(TransferFuncestimator)版本(ARRPLOTMAG)

释放(arrplotphasedelay)

当使用Lagrange近似时,多项式增加的顺序会稍微增加有用的带宽。分化过滤器的长度,即脉冲响应的零件数(“系数”属性的行数)等于多项式的长度(“系数”属性的列数)。其他设计方法可用于克服此限制。另请注意,在DC时,三阶滤波器的相延迟如何从0.4变为1.4个样品。由于立方拉格朗日插值器是第三阶过滤器,因此它可以实现的最小延迟为1。因此,此情况的延迟为1.4 ms而不是0.4 ms。

正弦= DSP.SineWave('频率',50,“ SampleSperFrame”,nx);tic,尽管toc <2 x = sine();y1 = fracdelay(x,0.4);y2 = farrowfracdelay(x,1.4);范围([X,Y1,Y2])结尾释放(fracdelay)版本(范围);

时变的分数延迟

Farrow结构比直接FIR的优势在于其可调性。在许多实际应用中,延迟是时间变化的。对于每个新延迟,我们将需要在直接形式实现中进行一组新系数,但是通过Farrow实现,多项式系数保持恒定。

tic,尽管toc <5 x = sine();如果TOC <1延迟= 1;ElseifTOC <2延迟= 1.2;ElseifTOC <3延迟= 1.4;ElseifTOC <4延迟= 1.6;别的延迟= 1.8;结尾y = farrowfracdelay(x,delay);范围([x,y])结尾释放(fracdelay)版本(范围);

相关话题