帮我理解FFT函数(Matlab)

时间:2009-01-11 22:09:58

标签: matlab fft

1)除了负频率,这是FFT函数提供的最小频率?它是零吗? 2)如果它为零,我们如何在对数刻度上绘制零点? 3)结果总是对称的?或者它看起来是对称的?
4)如果我使用abs(fft(y))来比较2个信号,我可能会失去一些准确度吗?

5 个答案:

答案 0 :(得分:14)

  

1)除了负频率,这是FFT函数提供的最小频率?它是零吗?

fft(y)返回带有y的DFT的第0到第(N-1)个样本的向量,其中y(t)应该被认为是在0上定义的。 .N-1(因此,y(t)的'周期性重复'可以被认为是在Z上定义的周期信号。)

fft(y)的第一个样本对应于频率0。 真实的离散时间周期信号的傅立叶变换也具有离散域,它是周期性的和Hermitian(见下文)。因此,负频率的变换是正频率的相应样本的共轭。

例如,如果您将y的(周期性重复)解释为在Z上定义的周期性实信号(采样周期== 1),则fft(y)的域应解释为N等间隔点0,2π/ N ...2π(N-1)/ N.负频率-π...-π/ N的变换样本是频率为π...π/ N的样本的共轭,并且等于频率上的样本 π...2π(N-1)/ N.

  

2)如果它为零,我们如何在对数刻度上绘制零点?

如果你想绘制某种Bode plot,你可以只为正频率绘制变换,忽略对应于最低频率的样本(特别是0)。

  

3)结果总是对称的?或者看起来它只是对称的?

如果y是真的,它有Hermitian symmetry:它的实部是对称的,它的虚部是反对称的。换句话说,它的幅度是对称的,其相位是反对称的。

  

4)如果我使用abs(fft(y))来比较2个信号,我可能会失去一些准确度吗?

如果您的意思是abs(fft(x - y)),这是可以的,您可以使用它来了解差异的频率分布(或错误,如果x是y的估计值)。如果你的意思是abs(fft(x)) - abs(fft(y))(???),你至少会丢失阶段信息。

答案 1 :(得分:2)

好吧,如果你想了解快速傅立叶变换,你想回到基础并理解DFT本身。但是,这不是你所问的,所以我建议你在自己的时间里这样做:)

但是,在回答你的问题时:

  1. 是的,(除了否定,正如你所说)它是零。对于N点输入,范围是0到(N-1)。
  2. 在MATLAB中?我不确定我理解你的问题 - 如同任何其他值一样绘制零值...尽管正如duffymo正确指出的那样,没有自然对数为零。
  3. 它基本上类似于sinc(正弦基数)函数。但它不一定是对称的。
  4. 你不会失去任何准确性,你只会得到幅度反应(但我猜你已经知道了)。

答案 2 :(得分:2)

咨询“C中的数字配方”,第12章“快速傅立叶变换”说:

  1. 频率范围从负fc到正fc,其中fc是奈奎斯特临界频率,等于1 /(2 * delta),其中delta是采样间隔。所以频率肯定是负面的。

  2. 您无法绘制不存在的内容。没有零的自然对数。您可以将频率绘制为x轴,也可以选择半对数轴不包括零的范围。

  3. 频率范围内是否存在对称性取决于时域中函数的性质。您可以在频域中绘制一个关于y轴不对称的图。

  4. 我不认为拿这样的绝对值是个好主意。您需要阅读更多有关卷积,校正和信号处理的信息,以比较两个信号。

答案 3 :(得分:2)

  1. fft的结果可以是0已经被其他人回答了。
  2. 绘制0频率,诀窍是将其设置为一个非常小的正数(我为此目的使用exp(-15))。
  3. 已经被其他人回答了。
  4. 如果您只对幅度感兴趣,是的,您可以这样做。例如,这适用于许多图像处理问题。

答案 4 :(得分:0)

你问题的一半:

3)FFT运算的结果取决于信号的性质;因此没有什么要求它是对称的,尽管如果是这样你可能会得到更多关于信号属性的信息

4)这将比较一对信号的幅度,但那些相等的信号不能保证FFT是相同的(不要忘记相位)。但是,它可能足以满足您的目的,但您应该确定这一点。