我有一个采样时间为 0.5 微秒的信号,我想将此信号移动采样时间的一小部分,例如 3 纳秒。
我已经阅读了一些关于分数延迟滤波以及使用 FFT 和 IFFT 来执行这种延迟的在线资源。有人可以指出我对此的一些理论或给我一个关于如何实施它的想法。
对于整数样本信号的常规移位,我通过将信号移位所需的样本数并在开头添加零来实现这一点。这种方法正确吗?
我有一个采样时间为 0.5 微秒的信号,我想将此信号移动采样时间的一小部分,例如 3 纳秒。
我已经阅读了一些关于分数延迟滤波以及使用 FFT 和 IFFT 来执行这种延迟的在线资源。有人可以指出我对此的一些理论或给我一个关于如何实施它的想法。
对于整数样本信号的常规移位,我通过将信号移位所需的样本数并在开头添加零来实现这一点。这种方法正确吗?
1996 年的 IEEE 信号处理杂志上有一篇很好的概述文章:拆分单位延迟:分数延迟滤波器设计工具。它的好处是还有一组相关的 Matlab 文件可用。这些例程将允许您设计这样的系统。
至于移位整数个样本,您所做的显然是正确的。
除了做 fft 类型的解决方案,您还可以使用插值,合适的具体插值类型当然取决于您的需要!过去,线性插值在法兰效果方面对我来说效果很好,但你的里程可能会有所不同。
如果线性插值不够好,拉格朗日插值也可能值得研究。 http://blog.demofox.org/2015/07/08/lagrange-interpolation/
这可以使用 MATLAB 中的“delayseq”函数来完成。此功能可以在小数样本中移动信号。你可以写下你想要移动的样本数量,或者就时间而言,你想要的延迟量。但需要注意的重要一点是延迟信号的长度与原始信号的长度相同,因此如果您不想截断信号,请先使用零填充,然后再使用 delayseq。 https://in.mathworks.com/help/phased/ref/delayseq.html