Matlab之FFT變換

採集到一段信號,我們最想做的就是看信號的波形圖以及信號的頻譜圖。波形圖好畫,但頻譜圖一直很難理解怎麼畫。而且自己採集到的一段信號可能是頻率時變的,就需要窗函數截取信號,然後滑動查看信號頻域變化。這種方法展示頻域隨時間的變化不太明顯,就需要做時頻分析,以期得到頻域變化圖。

1.採樣定理

對於一個正弦波信號,可以寫爲如下的形式:

                                                   

其中:

       A是信號的振幅;

       f 是信號的頻率;

       \varphi是信號的初始相位;

       k 是信號的噪聲電平;

則,一個信號振幅爲4V,頻率爲1Hz的電壓信號可以繪製如下:

clc;clear;close all;
%% 參數初始化
A=4;%振幅
f=1;%頻率
v=0;%初始相位
k=0;%噪聲電平

fs=100;%採樣頻率

%% 畫出波形
t = 0:1/fs:2;        

x = A*sin(2*pi*f*t+v)+k;%弧度爲單位
plot(t,x,'LineWidth',1)
grid on
xlabel('時間/s','FontSize',13);%設置x軸標籤
ylabel('電壓值/V','FontSize',13);%設置y軸標籤

繪製結果如下:

                                   

根據奈奎斯特採樣定理(Nyquist-Shannon 採樣定理):信號採樣率fs必須大於被測信號感興趣最高頻率分量的兩倍。通常希望採樣率大於信號頻率約五倍。

實驗驗證1:對於振幅是4V,頻率爲1Hz的信號,使用1Hz的採樣率進行採樣

實驗驗證2:對於振幅是4V,頻率爲1Hz的信號,使用2Hz的採樣率進行採樣

實驗驗證3:對於振幅是4V,頻率爲1Hz的信號,使用4Hz的採樣率進行採樣

實驗驗證4:對於振幅是4V,頻率爲1Hz的信號,使用8Hz的採樣率進行採樣

實驗驗證5:對於振幅是4V,頻率爲1Hz的信號,使用16Hz的採樣率進行採樣

結論:

從圖中可以看出,隨着採樣率的提高,波形越來越趨近原始波形。當採樣率只是信號頻率的2倍時,其實信號畸變還是非常嚴重的,基本到4倍左右,才能基本看出波形週期和振幅。

2.FFT得到信號頻譜圖

參考文章鏈接:https://blog.csdn.net/qq_29689907/article/details/82793459

信號的頻譜分析分爲:實信號複數信號的頻譜分析。

實信號的頻譜特點:關於原點對稱,是雙邊譜。

覆信號的頻譜特點:只存在正頻域部分,單邊譜。

覆信號是實際信號處理常用的表示形式:x=x_re+j*x_im;分爲實部和虛部,虛部是實部的希爾伯特變換。

2.1 實信號的頻譜分析

由於實信號是雙邊譜,因此可以看到信號的負頻率。而進行了信號的時域採樣,因此使得頻域出現了週期性,週期爲採樣率。

使用fft得到只有正頻域的,可以在正頻率部分看到兩根譜線(fft(x)運算後得到的是N的結果對應[0,fs]頻點的對應的值,進行(abs(fft(x))*2/N)後纔是對應的真是幅度值)。爲了看到負頻率部分的頻譜,我們可以使用shiftfft函數,使用shiftfft時需要注意的是橫座標刻度是[-fs/2,fs/2]。

使用fft函數繪出實信號的頻譜圖:採樣週期20Hz,由於週期性,19Hz的頻點其實是負頻率。

clc;clear;close all;
%% 參數初始化
A=4;%振幅
f=1;%頻率
v=0;%初始相位
k=0;%噪聲電平
 
fs=20;%採樣頻率
 
%% 畫出波形
t = 1/fs:1/fs:2;        
 
x = A*sin(2*pi*f*t+v)+k;%弧度爲單位
plot(t,x,'LineWidth',1)
grid on
xlabel('時間/s','FontSize',13);%設置x軸標籤
ylabel('電壓值/V','FontSize',13);%設置y軸標籤
 
%% 畫出fft後的頻譜圖
N=length(x);
figure(2);
f1_index=(0:N-1)*(fs/N);
y1=abs(fft(x)).*2/N;
plot(f1_index,y1);
xlabel('頻率(Hz)');ylabel('幅度(V)');

繪製結果如下:這裏要注意點數必須爲偶數,不能是奇數,否則會出現頻率誤差。推薦的點數是2的冪次方,如1024等等。因爲fft不足2的冪次方會補零,造成頻率域擴寬。

使用shiftfft繪製實信號的頻譜圖:採樣週期20Hz

clc;clear;close all;
%% 參數初始化
A=4;%振幅
f=1;%頻率
v=0;%初始相位
k=0;%噪聲電平
 
fs=20;%採樣頻率
 
%% 畫出波形
t = 1/fs:1/fs:2;        
 
x = A*sin(2*pi*f*t+v)+k;%弧度爲單位
plot(t,x,'LineWidth',1)
grid on
xlabel('時間/s','FontSize',13);%設置x軸標籤
ylabel('電壓值/V','FontSize',13);%設置y軸標籤
 
%% 畫出fft後的頻譜圖
N=length(x);
figure(2);
f2_index = (-N/2:(N-1)/2)*(fs/N);
y2=abs(fftshift(fft(x))).*2/N;
plot(f2_index,y2);
xlabel('頻率(Hz)');ylabel('幅度(V)');

繪製結果如下:

2.2 覆信號的頻域分析

 

 

3.得到信號時頻圖

 

4.名詞解釋

4.1 負頻率

關於負頻率,目前的理解有兩個,第一個看法是沒有實際意義,可以看到,對信號進行傅里葉變換之後信號從實數域被轉換到了複數域,而之所以會出現負頻率,正是爲了消除信號的虛部。實際上,傅里葉級數展開後,負頻率對實部與對應正頻率相同,而虛部相反從而消除虛部,從這個意義上來說,負頻率沒有實際的物理意義而純粹是數學處理,另一個看法是負頻率也可以存在,他可以理解爲信號在複平面上的正轉與反轉,而負頻率對應的正式反轉。
 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章