深入淺出解釋FFT(二) fft對訊雜比影響

2021-07-29 22:42:51 字數 1397 閱讀 4682

這幾天在做pipelined adc的動態特性的

**,如snr,thd,sndr.....既然是動態特性,就不可避免地要用到fft,因此這幾天研究了一些關於fft的東西,同時收集了一些公司/個人的snr測試

程式,小有收穫,同時還有些疑點,故開此討論貼,希望能有高人點撥一二,同時將自己的心得與各位分享。

首先說fft,fft乙個很重要的

問題是頻譜洩露。但是頻譜洩露不是必須的,也就是說如果設定合理,可以避免頻譜洩露(尤其是對於**而言)。在滿足「相關取樣」的前提下,就不會有頻譜洩露。即m/n=fin/fs,m為時域的週期數,n為採點數,fs為取樣頻率,fin為

訊號頻率。如果嚴格滿足這個關係,則完全不會有頻譜洩露,不用任何的加窗處理。這對於**而言,是完全可以做到的。同時n必須是2的整數次冪,這是由fft演算法本身要求的。

關於「相關取樣」,m最好是1或者奇數,不要取為偶數。是不是取偶數就一定不可以呢?不盡然,打個比方,如果你取m=2,n=1024,這種取法等效為m=1,n=512。你在時域用了兩倍的時間,結果取樣點數還要打個對折,那就完全不划算了。再舉個例子,m=1,n=256,fs=2^16, fin=256,此時滿足相干取樣,沒有頻譜洩露;m=3,n=256,fs=2^16, fin=3*256,此時滿足相干取樣,沒有頻譜洩露;那麼這兩種取法都滿足相干取樣,沒有頻譜洩露,那這兩種取法有沒有區別呢?我認為沒有區別。所以對於**而言完全可以只取m=1,這樣節省時間。對於測試而言,儀器帶來的誤差不可避免,而且時間不會很長,可以取多個週期。

如果不滿足相關取樣,則有頻譜洩露,需要加窗,同時mat

lab處理的時候需要加span,這就需要取多個週期。

fft先暫時說這麼多,疏漏之處不可避免,如果哪位有興趣,可以再討論。接下來說說snr,snr需要利用fft的結果來進行計算。

snr(db)=signal peak(db)-noise floor(db)-10logn,注意這個表示式中的最後一項,這一項是由fft帶來的躁底的變化。我個人到目前為止在這一點上還不明白,但是我找到了別人的一種說法,我列出來,希望能有高人點撥。最後一項可以這麼理解:為了產生n個fft頻率分支,在時域需要n個取樣點,取樣n次會把訊號的功率增加n^2倍,而雜訊的能量只會增加n倍,所以訊雜比會增加n倍。所以在計算snr的時候需要把fft帶來的躁底的變化減掉。對於以上解釋,我還沒弄明白,希望得到高人指點。 在

matlab做fft並計算snr的時候,涉及到對fft資料的處理。以下是做fft的命令y=fft(x),出來是n個向量(複數),在算功率的時候需要取模的平方,

power=abs(y)*abs(y)。這裡有乙個問題,平方之前y需要做處理嗎?有些

資料中在平方前會作如下處理y=fft(x),y1=2/n*fft(x),

power=abs(y1)*abs(y1)。我對這個做法的理解:2是將雙邊轉成單邊;至於除n,我不理解,是不是做了這個處理,就可以消除fft對躁底的影響?

深入淺出解釋FFT(三) 去掉頻譜中的直流分量

不論是fft還是dct或者其它變換中,都存在將直流分量置零的方法。比如將訊號的一階導數進行fft變換後置零直流分量。在模擬部分的電路中,不少元件 如放大器 輸出會有直流漂移 即輸出應該為零時,實際上是乙個直流電壓 這個漂移會對下一級的放大等功能發生影響。所以通常在各級之間採用交流耦合 最簡單的就是用...

深入淺出Spring(二)

ioc概念 控制反轉 inversion of control 是乙個重要的物件導向程式設計的法則來削減電腦程式的耦合問題。它還有乙個名字叫做依賴注入 dependency injection ioc 不是什麼技術,它是一種設計模式。例項演示 為了更好的說明 ioc,我為大家舉乙個簡單的例子,如有這...

深入淺出MySQL筆記(二)

本筆記為學習該書所記,便於複習。包含第三 四章筆記。資料型別與運算子 toc 整數型別 zerofill unsigned auto increment 浮點數型別 定點數型別 decimal m,d show warningsl 位型別bit m hex data datatime timesta...