我有一个采样时间为0.5微秒的信号,我想将此信号偏移采样时间的一小部分,例如3纳秒。

我已阅读了一些有关分数延迟滤波,以及有关使用FFT和IFFT进行此类延迟的信息。有人可以针对这个问题向我指出一些理论还是要给我一个实现方法的想法。

对于整数样本的信号的常规移位,我已经通过将信号移位所需的数目来实现。样本数量,并在开头添加零。这种方法正确吗?

#1 楼

1996年《 IEEE信号处理》杂志上刊登了一篇很好的概述文章:拆分单位延迟:分数延迟滤波器设计工具。有趣的是,还有一组相关的Matlab文件可用。这些例程将允许您设计这样的系统。

对于移位整数个样本,您所做的显然是正确的。

评论


$ \ begingroup $
我只是略读了这篇论文,所以我不确定是否明确在其中,但是分数延迟与分数导数有关,分数导数将n阶导数推广为任意阶数。
$ \ endgroup $
–soultrane
2015年8月4日在16:02



#2 楼

除了执行fft类型的解决方案外,您还可以使用插值,当然,具体的插值类型将取决于您的需求!过去,线性插值对我来说具有凸缘效果效果很好,但是您的里程可能会有所不同。

如果线性插值不够好,拉格朗日插值也许也值得研究。
http://blog.demofox.org/2015/07/08/lagrange-interpolation/

评论


$ \ begingroup $
Hermite可能比Lagrange更好,但是如果您可以使用MATLAB(或FIR滤波器设计程序),则可以设计自己的“多相滤波器组”插值器,其中具有针对各种不同系数的系数集,均匀间隔的分数延迟。选择最接近给定分数延迟的两个离散分数延迟,并在它们之间进行线性插值。
$ \ endgroup $
–罗伯特·布里斯托-约翰逊
15年8月4日在19:44

#3 楼

可以使用MATLAB中的“ delayseq”函数来完成。此功能可将信号移至小数样本中。您可以写出想要移动的样本数,也可以写出想要的延迟时间。但是要注意的重要一点是,延迟信号的长度与原始信号的长度相同,因此,如果您不想截断信号,请先使用零填充,然后再使用delayseq。 https://in.mathworks.com/help/phased/ref/delayseq.html