我使用Matlab计算时间序列数据的fft
结果。该信号具有未知的基频(在这种情况下约为80 MHz),以及几个高次谐波(1-20阶)。然而,由于有限的采样频率(在这种情况下为500MHz),我总是从高阶频率(7-20)获得混合频率,例如,第7位,峰值位于abs(2*500-80*7)=440 MHz
,第8位,频率为360 MHz,第13位,峰值位于abs(13*80-2*500)=40 MHz
。有谁知道如何摆脱这些人工混合频率?一种可能的方法是将采样频率增加到足够大的值。但是,我的数据集具有固定数量的数据和时间范围。因此,采样频率实际上由数据集的属性决定。解决这个问题的任何方法?
(我有这个问题的图片,但我没有足够的声誉来发布图片。很抱歉为理解这个问题带来不便)
答案 0 :(得分:1)
您正在尝试采样的基本属性 - 当您以固定频率fs
采样数据时,您无法区分具有相同幅度但频率不同的两个信号之间的区别,其中一个具有{{1}另一个有f1=fs/2 - d
。这种效果经常被用作优势 - 例如在混音器中 - 但在其他时候,这是一种不便。
除非您正在寻找这种混合效果(例如,在现代MRI扫描仪中的数字接收器上完成),否则您需要应用截止频率为f2=f2/2 + d
的“砖墙滤波器”。过滤器的滚降速度为24 dB / octave或更高 - 换句话说,它们会让“一切都通过”低于截止值,并“停止一切”在其上方。
数据采集供应商通常会提供带有ADC板的滤波解决方案。
很长的路要说:“这就是数字化的工作原理”。但这是真的 - 这就是数字化的工作原理。
答案 1 :(得分:0)
通常,在采样之前,一个低通滤波器将信号滤波到采样率的一半以下。否则,在采样之后,通常无法将任何混叠的高频噪声(您的高次谐波)与低于(奈奎斯特)一半采样率的更有用的频谱分开。
如果在采样之前没有对信号进行滤波,则缺陷是样本矢量中固有的,而不是FFT。