MATLAB FFT的細節處理

2021-10-02 08:16:34 字數 1650 閱讀 4841

對於fft函式,其作用為快速傅利葉變換,可以實現常規傅利葉變換的**。而由於其原理,最後生成的影象可能並不是我們常分析的樣子。本文將簡要對fft函式的細節處理進行一定的分析,從而使原來的的影象變為便於我們分析的樣子。

f0=1e6; %頻率

fs=5e6; %取樣率

t=1/fs:1/fs:1; %樣點採集

s=cos(2pif0*t); %訊號

原始與最後版本以一段程式實現,測試時只需要把所有的**取消備註,**加上備註,即可實現對原始模式的**。

**結果如下:

我們可以看到,頻率上除了1e6hz,還有4e6hz,這其實是由於fft函式的對稱性而產生的。即fft函式的返回值是以奈奎斯特頻率對稱的(本函式為2.5e6hz)

對於幅度來說,這兩根線的幅度均為2.5e6。分析可知,其為取樣率的一半。即fft的幅值大小與樣點個數有關。

而對於我們來說,我們習慣正頻率與負頻率,訊號幅值下的影象,這就要求我們對fft的結果進行一定的變化。

**正常執行即可,結果為:

簡要來說,我們只是將橫座標變為正負兩端,對已進行fft變化的函式進行了fftshift的再次變化。

fftshift——一種迴圈平移的函式,可以將奈奎斯特頻率(即對稱軸)移動至頻譜中心。

clc;%%

%%%%

%%%%

%%%%

%%%%

%%%%

%%%%

%%%傅利葉變換理解%%%

%%%%

%%%%

%%%%

%%%%

%%%%

%%%%

%%%%

%%f0=1e6

;%頻率

fs=5e6

;%取樣率t=1

/fs:

1/fs:1;

%樣點採集

%fshift =(1

:length

(t))

;%【2】原始版,頻率

fshift=(-

length

(t)/2:

length

(t)/2-

1);%【1】完全版,頻率

s=cos(2

*pi*f0*t)

;%sff=

fft(s)

;%【2】原始版,變換

sf_test=

fft(s)

/length

(s);

%【1】完全版,還原原始幅度值

sff=

fftshift

(sf_test)

;%【1】完全版,變換迴圈平移

figure;

plot

(fshift,

abs(sff));

%abs取絕對值,消除虛數影響

xlabel

('頻率/hz');

ylabel

('幅度');

title

('常規傅利葉變換圖'

)

openpose的細節處理

最近使用openpose,但是有一些細節 中沒有給出,還有一些不太重要但也挺關鍵的細節需要搞清楚,這篇文章就把用到的這些細節一併及下來。1 vgg基礎網路的輸入輸出 中說vgg基礎網路用到了前10層,但是看原始碼的話,他是用了12層的。相關的輸入輸出維度如下 vgg cfg 64,64,m 128,...

批處理指令碼的細節

寫jenkins在windows下vs專案的自動化編譯的批處理指令碼的時候,在一些細節處理方法遇到過很多問題,雖然網上關於批處理有很多的教程,但是對於一些指令講解還是不夠詳細,這些小問題往往會困擾你比較長的時間,這裡分享一下我在寫指令碼時遇到的一些小問題,希望能夠幫助到大家。1.錯誤處理乙個好的指令...

ListView記憶體處理細節

listview注意事項 解決步驟 1 定義乙個空的listview資料集合,先在主線程中載入 第四步做完之後 利用定義的handler來傳送訊息更新ui message.obtain handler,message update listview sendtotarget 3 寫乙個類實現 han...