请教关于FFT的问题
基本情况:xilinx,streaming,32点, fwd_inv为高,fwd_inv_we为高,scale_sch_we为低
1,
对一个正弦波采样,一周波采集32个点,将这32个数据存在一个ram中
2,
FFT的start始终为高,使用100MHz的时钟循环读ram
我的问题是:
我采样的是单一的正弦波,输出为什么在xk_index为1和31两处都有比较大的值?究竟根据该输出怎么确定输入信号的频谱,还是别的什么地方弄错了?

第一个问题已经明白了,请教大家第二个问题
图片看不清楚
对一个周期为32的正弦函数 sin(2*pi/32*x) 在 x=0,1,2..,31 处采样,得到32个数据点。对这32个数据点做FFT,得到的值的绝对值是:
6.69535287e-17, 1.60000000e+01, 1.06198890e-15,
3.34075122e-15, 5.78108537e-16, 1.36967395e-15,
5.13668130e-16, 5.61856269e-15, 3.39729804e-16,
1.30066785e-15, 1.03805465e-15, 4.09153824e-16,
6.30304227e-16, 2.70418975e-16, 4.08511267e-16,
6.12911139e-15, 1.55091076e-16, 5.55111512e-17,
4.08511267e-16, 8.22243630e-16, 6.30304227e-16,
1.32438138e-15, 1.03805465e-15, 5.61856269e-15,
3.39729804e-16, 8.40036149e-16, 5.13668130e-16,
5.12795349e-16, 5.78108537e-16, 1.44144099e-15,
1.06198890e-15, 1.60000000e+01
的确是第1个和31个FFT值比较大,LZ的输出没有问题
因为你输入的是实数信号,所以结果是正确的。
plot(n*fs/a,magR_fix);把你的数据按这个画图就得到频谱了,其中n是0:31,fs是你的采样频率,a是点数32,magR_fix是输出变换复数信号的模值,abs(real+1i*imag).
我的意思是为什么会出现两个较大的点呢,不是一个点代表一个频率吗,既然我的信号是单一频率的,那么变换后的值也应该有一个点模值较大才对啊!
哎 …… 对于实信号输入 FFT的结果 在0~Fs/2 与 Fs/2 ~ Fs 上是对称的。
你输入一个复信号 就能看出区别来了
32个点 描述 一个周期 峰值 就是在 1 与31,描述两个周期就是在 2与30……………………
根据采样定理最高到 16个周期 ,是不是 很神奇?
我看到过一个文章说Fn=(n-1)*FS/N,如前面所说的话,如果我根据变换后的结果判断信号的频谱时,只在0到N/2之间取值就可以了?
