【发布时间】:2012-06-01 01:03:28
【问题描述】:
我正在为 8 位 Atmega32 开发一个频谱分析仪,它可以输出到 LCD 显示器上。 最大采样频率为 40kHz,因此最大频率为 20kHz,遵循 fs > 2B。 目前,我正在内部生成一个信号,然后对该信号应用 FFT 并在 LCD 上查看频谱。
请注意这是用伪代码编写的:
#define SIG_N 128 //Number of samples in signal buffer
#define FFT_N 64 //2*Output bins
uint_8 signal[SIG_N];
uint_8 spektrum[FFT_N];
for (int i = 0; i < SIG_N; i++){
signal[i] = 255*sin(2*3.14*f*i / SIG_N);
}
computeFFT(signal,spektrum,FFT_N); //arbitrary method computes signal outputs spektrum
输出频谱目前有 FFT_N/2 = 32 个 bin,每个代表 1Hz。因此,我的频谱目前代表的最高频率(我已经测试过) - 32Hz。 如何增加这些 bin 的“频率宽度”,以便每个 bin 代表 625Hz? 请记住,由于内存限制,我无法将 FFT_N 的大小增加到 64~128 以上。
【问题讨论】:
标签: c signal-processing fft avr spectrum