我有一个数组,其中有N个纯真实的点,代表一个空间函数:
[f_0,f_1,f_2,…,f_{N-1}]
函数值以距离dx间隔开。
因此,奈奎斯特频率由f_N = l/(2*dx)给出。
我使用FFTW 2计算C中阵列的傅里叶变换,其中函数为纯1d真实的输入rfftw。这导致只有N/2个独立的复数,它们存储在“半复数数组”中:
[r_0,r_1,…r_{N/2},i_{N+1}/2-1,...,i_2,i_1],其中r表示真实的,i表示虚部。
现在我想知道这个阵列的频域是什么样子的。r_{N/2}是f_N或(f_N/)2处的值吗?
我已经有了代码,它似乎工作,我只是不知道如何解释频率轴。
1条答案
按热度按时间eh57zj3b1#
你的符号混淆了。如果您的输入是
字符串
那么
f_n
是位置n
处的输入值,它本身不是位置。输入在整数索引n = 0 … N-1
处。因此,询问“f_N处的值”的问题没有意义。FFTW半复数输出为:
型
这里,
r_n + i * i_n
是位置n
处的值。频率是整数索引n = 0 … N-1
。奈奎斯特频率与N
相关,而不是f_N
(甚至在输入中没有定义!)。它由N/2.0
给出。如果在输入中假设某个采样
dx
,使得位置n
处的样本具有x = n*dx
,则还可以将频率仓转换为物理频率,其中df = 1/(N*dx)
。因此,索引n
处的频率为n/(N*dx)
。要理解的是,频率n/(N*dx)
的值等于(n+k*N)/(N*dx)
的值,其中k
是任何正整数或负整数(从中可以获得许多人期望在傅里叶变换中找到的负频率)。