我正在開發8位Atmega32的頻譜分析儀,輸出到LCD顯示器上。 最大采樣頻率爲40kHz,最大頻率爲20kHz,符合fs> 2B。 目前,我在內部生成一個信號,然後將FFT應用於此信號並查看LCD上的頻譜。FFT箱寬度澄清
請注意,這是用僞代碼:
#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個箱,每個代表爲1Hz。因此,我的頻譜目前代表的最高頻率(我測試過) - 32Hz。 如何增加這些箱的「頻率寬度」,使每個箱代表625Hz? 請記住,我無法將FFT_N的大小增加到64〜128之間,因爲我有內存限制。
因爲我沒有對這個信號進行採樣,所以我在內部產生它,這會受到影響? – Ospho
當你在內部產生一個信號時,你仍然可以有一個名義採樣率,但當然這可以是任何你喜歡的。但是,如果您想隨時播放此信號,那麼採樣率將是您DAC的採樣率。 –
對不起還有一個簡單的問題,是否對信號緩衝區SIG_N需要在40kHz採樣時有多大限制? – Ospho