Python 在对一组数据点应用fft后,如何恢复傅里叶级数系数?

Python 在对一组数据点应用fft后,如何恢复傅里叶级数系数?,python,python-3.x,numpy,Python,Python 3.x,Numpy,假设我有一系列的点,我将fft.fft应用于数据,我如何识别原始傅里叶级数的系数,我知道a_0可以直接从fft.fft的最大值中提取,但是a_n和b_n呢?我也知道它们可能出现在频谱上,但这里有方法吗? X=np.数组([917,918,919,918,917,916,915,913,912,910,906,903,901,899,897,896,896,896,896,896,897,898,900,903,905,908,911,914,916,919,918,917,916,914,914

假设我有一系列的点,我将fft.fft应用于数据,我如何识别原始傅里叶级数的系数,我知道a_0可以直接从fft.fft的最大值中提取,但是a_n和b_n呢?我也知道它们可能出现在频谱上,但这里有方法吗? X=np.数组([917,918,919,918,917,916,915,913,912,910,906,903,901,899,897,896,896,896,896,896,897,898,900,903,905,908,911,914,916,919,918,917,916,914,914,913,918,917,916,914,913,913,913,913,913,905,905,914,914,914,914,914,914,913,913,913,913,913,913,913,913 f=np.fft.fft(X) 但是如果我们用时间来绘制x,我们发现它是周期性的,可以用傅里叶级数来表示: f(x)=a_0/2+Sigma(a_n*np.cos(2*nnp.pi/L)+b_nnp.sin(2*n*np.pi/L))
我怎样才能取回a_0、a_n和b_n?

好的,那么您有7个输入元素,从1215+0i、1219+0i等开始(复杂值,但在您的情况下,它们恰好是纯实数)。将pad设置为2的幂是正常的,但可以。结果将以直流系数a_0(也是复数,但虚部将为0)开始,然后结果的下一个元素将是最低的非直流频率(在您的符号a_1+b_1*i中),依此类推。 从以下地址的文档:

结果中的值遵循所谓的“标准”顺序:如果= fft(a,n),则a[0]包含零频率项( 信号),对于实输入而言,它始终是纯实的。然后A[1:n/2] 包含正频率项,[n/2+1:]包含 负频率项,按负频率递减的顺序。 对于偶数个输入点,A[n/2]表示两者都为正 负奈奎斯特频率,也是纯真实的 输入。对于奇数个输入点,[(n-1)/2]包含 最大正频率,而A[(n+1)/2]包含最大正频率 负频率


现在,由于您的输入数组都是实数,您可以查看更快的
np.fft.rfft
。结果是对称的(因为实际输入),所以它只包含实际系数的一半——另一半可以从给定的结果导出。有关详细信息,请参见。

您能举一个您想做的例子吗?numpy fft文档非常详细。x=[12151219221321321321512152161217]这是一个我们可以应用np.fft.ff(x)的系列,对吗?这是傅里叶级数的表示,它是a_0+Sigma(a_ncos(2npi/L)+b_sin(2npi/L))的化合物,对吗?如何从这个计算中得到a\u 0、a\u n和b\u n?