Matlab中的离散傅立叶变换 - 理论混淆

时间:2014-02-25 21:15:58

标签: algorithm matlab fft dft

我有一个定期的期限

v(x) = sum over K of [exp(iKx) V(K) ] 

其中K = 2 * pi * n / a其中a是该项的周期性,n = 0,1,2,3 ....

现在我想找到对应于特定K的傅里叶系数V(K)。假设我有一个v(x)向量,其中包含10000个点

x = 0,0.01a,0.02a,...a,1.01a,....2a....100a 

这样我的格子的大小就是100a。对该向量的FFT给出10000个傅里叶系数。对应于这些傅立叶系数的K值是2 * pi * n /(10000 * 0.01),其中n = 0,1,2,3,... 9999。

但由于格子的周期性,我的K的形式为2 * pi * n / a。我错过了什么?

1 个答案:

答案 0 :(得分:1)

您的功能可能并不复杂,因此您需要复杂傅里叶级数表达式中的负频率。在FFT期间,这并不重要,因为负频率被混叠到较高的正频率,但在表达式中作为连续函数,这可能会产生奇怪的结果。

这意味着如果N是采样的大小,则n的范围是从-N / 2到N / 2-1。

请注意,如果您从0a开始,步数为0.01a,结束时为100a,则您给出的点数为10001。所以N = 10000点的最后一点应该是100a-0.01a = 99.99a。

您的采样频率是采样步骤的倒数,Fs = 1 /(0.01a)。然后,FFT的频率为2 * pi * n / N * Fs = 2 * pi * n /(10000 * 0.01a)= 2 * pi * n /(100 * a),其中每100个对应于其中一个你的K。

这并不令人惊讶,因为采样超过100个函数周期,较长的周期导致基本频率低得多。如果信号v(x)是真正周期性的,除了可被100整除的那些之外的所有幅度将为零。如果由于噪声和测量误差导致信号不完全周期性,则峰值将泄漏到相邻频率。要获得原始任务的正确结果,您必须将振幅积分在峰值上。