【问题标题】:discrete fourier transform in Matlab - theoretical confusionMatlab中的离散傅立叶变换 - 理论混淆
【发布时间】:2014-02-26 23:14:03
【问题描述】:

我有一个周期性的术语

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 的形式。我错过了什么?

【问题讨论】:

  • 你的符号很难理解。此外,这很可能是题外话(因为它似乎是一个信号处理/数学理论问题 - 可能更适合 dsp.stackexchange.com)。
  • dsp.stackexchage.com 在我的位置不起作用,它似乎打开了一个页面,上面只写了 stackexchange。
  • 糟糕,错字。这是dsp.stackexchange.com

标签: algorithm matlab fft dft


【解决方案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) 确实是周期性的,则除 n 可被 100 整除的幅度之外的所有幅度都将为零。如果信号由于噪声和测量误差而不是完全周期性的,则峰值将泄漏到相邻频率中。要获得原始任务的正确结果,您必须对峰值上的幅度进行积分。

【讨论】:

  • 所以频率将从 2*pin/a 延伸,其中 n = -N/2 到 N/2-1,第 100 个将是我需要的形式?是的,这是有道理的,但你能确认一下吗?我的意思是,如果我需要一个负频率的傅立叶系数,那么我是否必须查看更高的正频率,让我们假设我必须查看 -4*pi/a。因此,我将查看哪个正频率 - 将 -2*Npi/a 作为新的零,或者在完成一半正频率后继续负频率。一旦我的疑虑清楚,我会接受你的回答。提前非常感谢。
  • 不完全是。在 N=10000 和超过 100 个周期的 FFT 之后,你会得到一些数组,比如 amp[k],k=0,...,9999。 amp[k] 是频率 2*pik/(100*a) 的幅度。如果 k=100*n,这将减少到一些 K=2*pin/a。但是,如果在 100 个周期内存在噪声,则 amp[100*n+k] for k=-5,...,5 左右可能包含最初来自频率 K 的明显贡献。
猜你喜欢
  • 1970-01-01
  • 2018-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
  • 1970-01-01
相关资源
最近更新 更多