但是,如果我想将不同的频率分量偏移不同数量的样本怎么办?在这种情况下,您无法找到整个数据集的 FFT 并乘以相同的指数。您必须分别处理不同的频率,对吗?
您所描述的是一个具有非恒定(即频率相关)群延迟的系统。
群延迟是相位的导数,因此, d fd fφ ( f)的一个系统。
在滤波器设计中,您(大多数时候)需要恒定的群延迟,因此您设计的滤波器具有线性相位(这意味着您需要使用 FIR 滤波器,并且需要使它们对称);线性函数的导数是常数!
现在,您需要一个给定的“群延迟配置文件”。Sooo,如何实际实现以下想法:
从本质上讲,您可以通过通常用于设计所需幅度响应的线性相位滤波器的窗口设计方法来解决此问题。相反,您想要定义群延迟,从而定义随频率变化的相位响应。
- 通过对该轮廓进行数值积分(即进行累积总和),将您的群延迟定义转换为相位定义。(积分是从相位响应传递群延迟的微分的逆运算;因此,结果应该是每个值都是ej 2 φ, 和2π _φ是你想要的相对延迟)。在高“过采样”下进行该定义,即如果您只需要实际“分辨率”来实现采样率/10 的频率相关延迟,则将该函数定义为 200 点。请注意,您的“频率采样率”为r频率=F样本200.
- 将结果与低通线性滤波器脉冲响应进行卷积。为什么会在下一步变得更清楚。
- 通过执行 IDFT (IFFT) 将结果转换为时域。上面低通滤波器的效果现在是,很多结果值(足够接近)为零。所以,你可以省略这些。
如果我没记错的话,您现在有一个具有所需群延迟轮廓的滤波器加上一个常数(该常数源于频域中的低通滤波)。
如果您只关心非重叠频带并且它们应该具有非常不同的群延迟,则另一种方法是通过滤波器设计方法很难正确构建该滤波器:
- 找到“最硬”(即最窄)的波段;使用您最喜欢的数学工具包的滤波器设计方法为这些设计一个 FIR 带通滤波器(我建议设计一个等效宽度的低通并在频率上移动它)。该滤波器的长度将是所有带通滤波器所需的最长。充分过采样,即重新设计该滤波器,但使用假设长度的 20 倍。也将该长度用于所有其他过滤器。
- 线性相位滤波器的群延迟是其长度的一半。现在,您所有的带通都具有相同的群延迟τ抵消.
- 通过变换 (FFT)、乘以适当频率的复数正弦曲线以及反变换 (IFFT) 来调整各个滤波器的群延迟。如果您的频率不是(足够接近)Fs/长度(f我t e r ) _,你会得到泄漏/吉布现象。您可以通过应用一个窗口来换取振荡的准确性。如果您的过滤器很长,则可能甚至不需要窗口。
- 总结所有滤波器脉冲响应。
- (可选)如果结果表明很多抽头接近于零,则截断。