fft重叠帧_关于FFT实时频谱的几个基本概念 | 科创仪表局
實時頻譜圖通常由快速傅里葉變換得來。我們知道,傳統的掃描頻譜在任一瞬間其實只能接收某個特定頻率的信號,如果掃描到這個特定點的時候,該信號剛好沒有出現,則會被遺漏。因此,不能用掃描頻譜儀來捕捉快速跳頻信號。當用來觀察其它調制信號的時候,看到的也不是該調制信號的真實頻譜。例如,對于單音調頻信號,事實上任意瞬間,只存在一個頻率。但是用掃描頻譜來觀察時,只有當信號的瞬間頻率和頻譜儀的瞬間頻率恰好靠近時,才能被頻譜儀檢測。根據掃描速度的不同,同一個調頻信號可以出現“多種”頻譜。而實時頻譜儀的數據來源,是整個通頻帶的IQ信號,該信號符合奈奎斯特定理,所以不會丟失任何信息。這樣看來,只要偶發事件(例如一個跳頻點)的持續時間,長于奈奎斯特定理規定的極限(二分之一采樣率的倒數),那么實時頻譜就必然能發現它。事實是這樣的嗎?
我們用有波形界的photoshop之稱的音頻編輯軟件Adobe Audition(原來叫做cooledit)來加以演示。大家也可以自己裝上這個軟件玩一玩。
首先需要生成一個信號。我們生成的是1KHz和2KHz的雙音。先用很高的采樣率(1.2MS)來生成。
波形見下圖
我們來對它進行一個傅里葉分析。采用凱撒窗口,FFT點數高達16384點。
這是FFT的結果??梢钥吹?#xff0c;頻譜的頻率分辨率非常糟糕,分辨率帶寬(RBW)高達100Hz,請注意右側的坐標。
這是因為采樣率太高造成的。1.2M的采樣率,FFT結果能實現0-600KHz的頻譜,對于2KHz的信號,所占的比例就非常少,即使采用了1.6萬點的FFT,也只能在很少的點上有反映,加窗以后,頻率分辨率就非常低。
為了看到更清晰的譜圖,必須減小RBW。方法是增大FFT點數,或者降低采樣率。由于軟件最大只能1.6萬點,所以只剩下降低采樣率一條路。考慮到我們的信號頻率非常低,選用12KS的采樣率就足夠了。
生成新波形,依然是1KHz,2KHz雙音。
對新波形做1.6萬點FFT??梢钥吹?#xff0c;譜線非常細,與背景噪聲的反差也不顯著。通過降低采樣率,的確顯著的提高了頻率分辨率。在1.2M采樣率時,1.6萬點僅僅相當于不到2毫秒,才覆蓋了不到2個周期。而12K采樣率時,同樣的點數已經覆蓋了200個周期。
把FFT的點數修改為1024點,可以看到反差顯著的增加,且譜線變粗。
我們制造一個長度為0.1秒的事件,即在波形中,中斷原有的信號0.1秒,插入3KHz的單音。
我們用1.6萬點來做FFT,得到下面譜線。請務必注意橫坐標,插入的事件長度為0.1秒,但受影響的時間高達2秒。在這兩秒內,中斷的1KHz和2KHz單音從未消失,新出現的3KHz單音雖能顯示,但是不論寬度還是幅度,都是錯誤的。這就說明,1.6萬點FFT的時間分辨率極低,盡管它有很好的頻率分辨率。
由于這種譜線是不正確的,所以并不能認為實時頻譜“發現了”3KHz的事件。
把FFT點數修改為1024點。譜線顯著的變胖了,也就是說頻率分辨率降低。從橫坐標來看,時間分辨率提高了,而且有一瞬間,1KHz和2KHz單音基本消失,而3KHz單音比較突出的顯示出來。1024點對應的時間長度大約為0.1秒,可以認為對于12KS采樣率來說,1024點是能夠基本正確的分辨0.1秒事件的最大點數。
其實1024點的幅度依然不夠準確。因為1024個采樣點,有很大可能包含了事件還沒發生時的數據,也有很大可能包含了一些事件已經結束后的數據。如果FFT是一段一段逐步進行的,那么,如果希望這1024個點總有一次只包含“純凈”的事件,那么事件長度至少應當是1024個點所占時間的2倍,也就是0.2秒。反過來看,如果只有512個點,就能符合這個2倍關系,如下圖。
當然,如果不想過多的降低FFT點數,還有一個辦法是不要以總點數為分段,而是用類似“先進先出”的方法。比如,一次新加入128個采樣點,吐掉128個采樣點。這樣做的后果是FFT的次數會增加8倍(如果總長度為1024的話),增加8倍的計算量。但是它能提高出現“純潔”事件的概率。這就是“重疊幀”技術。當重疊幀的“重疊”量無限增大時,就能把上述2倍關系,變成剛好1倍。當然不可能無限重疊,根據DSP或者FPGA的運算速度,通常只能做到50%重疊幀。
下面的圖是更小的FFT點數的結果。
128點
64點,可以看到頻率分辨率嚴重降低,已經到了快要分不清三個頻率的地步,但時間能夠更精確的表現。
下圖是采用了矩形系數更好的漢明窗的結果(128點)。調整不同的窗函數能夠稍微改善頻率分辨率,但是很明顯,底噪增加了。
另外構建一個更短的事件,這次是1ms。
對它做1.6萬點FFT。注意橫坐標,此時,完全看不到3KHz的事件,而1KHz和2KHz的斷點也完全無法看到。整個底部都受到了污染。
用少一些的點數看看。
這是能分清雙音的極限(64點)。在圖中,可以知道發生了事件,但是通過這個圖,無法對事件的性質進行任何判斷。因此可以認為該頻譜儀對0.01秒的事件其實無能為力。
最后,我們可以定義實時頻譜儀的時間分辨率,它是考慮重疊幀后,一次FFT較上一次FFT所新吞吐的原始數據所代表的時間長度。而100%捕獲時間(POI)指標,是考慮重疊幀以后,能夠“純凈的”落在一次FFT長度之內的事件的最短時間。
上述兩個概念都有一個前提,事件必須能被顯示器用不同灰度或顏色區分開。顯示器的刷新率是有限的,通常最多也就60幀左右。而短的FFT點數意味著FFT的次數極多,可能每秒上百萬次。這樣多的次數即使能被顯示,人眼也看不見。為了解決這個問題,人們用顯示器的第三個維度——亮度或者顏色來代表FFT譜線在同一位置出現的多少,從而發明了余輝顯示技術。
用降低FFT點數的方法能夠顯著提升時間分辨率和捕獲概率,但是,會顯著的惡化頻率分辨率(分辨帶寬,RBW)。如果一個頻譜儀標出1μs的100%POI,而此時FFT點數是128點(對于40M帶寬而言,頻率分辨率1.5MHz)——那么基本上就是在用單個奇高的指標來耍流氓了。
上面是用波形分析軟件進行的演示。對于HDSDR和SDR#這樣的SDR軟件,它的FFT本身就不是連續的,兩次FFT之間會丟棄大量的原始數據,即使是連續的掃頻信號,也會被顯示成間斷的點,因此不能用于這樣的演示。
總結
以上是生活随笔為你收集整理的fft重叠帧_关于FFT实时频谱的几个基本概念 | 科创仪表局的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 早报:iQOO Z7系列发布 起亚公布
- 下一篇: Win11即将迎来一波重磅更新:补丁10