基于FFT的信号频谱分析
設計要求
正弦波的信號頻譜分析
正弦波源代碼
clear all
clc
%*************************生成正弦信號************************% fs=100; %采樣頻率 N=128; %采樣總點數 n=0:N-1; %各個采樣點 f0=10; %正弦信號頻率 t=n/fs; %1/fs是采樣周期,采樣了128此,相對應得采樣時刻 x=sin(2*pi*f0*t); %生成正弦信號
%********************繪圖*****************
figure
subplot(231);
plot(t,x);
xlabel('時間/s');
ylabel('幅值');
title('時域的波形');
grid on;
%**********FFT變換并畫出頻譜圖******************
y=fft(x,N);%計算x的N點快速傅里葉變換
FuZhi=abs(y); %幅值計算
f=(0:length(y)-1)*fs/length(y); %將橫坐標轉化,顯示為頻率f= n*(fs/N)
subplot(232);
plot(f,FuZhi);
axis([0 100 0 80]);%設置當前坐標軸 x軸 和 y軸的限制范圍
xlabel('頻率/Hz');
ylabel('幅值');
title('FFT變化后幅頻譜圖');
grid on
%***********均方根譜**************
z=abs(y);
subplot(233);
plot(f,z);
xlabel('頻率/Hz');
ylabel('幅值');
title('均方根譜');
grid on
%**********************功率譜*************
power=z.^2;
subplot(234);
plot(f,power);
xlabel('頻率/Hz');
ylabel('幅值');
title('功率譜');
grid on
%***********對數譜******************
ln=log(z);
subplot(235);
plot(f,ln);
xlabel('頻率/Hz');
ylabel('幅值');
title('對數譜');
grid on
%**********IFFT恢復出原始信號********************
xifft=ifft(y);
magx=real(xifft);
t1=(0:length(xifft)-1)/fs; %N/fs對應各個點的采樣時間點
subplot(236);
plot(t1,magx);
xlabel('時間/t');
ylabel('幅值');
title('IFFT恢復出來的波形');
grid on
圖像顯示
白噪聲的信號頻譜分析
白噪聲源代碼
%*****************白噪聲******************
fs=50; %采樣頻率
t=-5:0.1:5; %采樣時間
x=rand(1,100); %產生1*100的隨機矩陣
figure
subplot(231);
plot(t(1:100),x); %采用100個時間點
xlabel('時間/s');
ylabel('幅值');
title('時域波形');
grid on
%************FFT變化并做頻譜圖***********
y=fft(x);
FuZhi=abs(y);
f=(0:length(y)-1)*fs/length(y); %x坐標設為頻率
subplot(232);
plot(f,FuZhi); xlabel('頻率/Hz');
ylabel('幅值');
title('FFT變換的頻域波形');
grid on
%************均方根譜************
z=abs(y);
subplot(233);
plot(f,z);
xlabel('頻率/Hz');
ylabel('均方根譜');
title('均方根譜');
grid on
%**************功率譜**************
power=z.^2;
subplot(234);
plot(f,power);
xlabel('頻率/Hz');
ylabel('功率譜');
title('功率譜');
grid on
%************對數譜**********
ln=log(z);
subplot(235);
plot(f,ln);
xlabel('頻率/Hz');
ylabel('對數譜');
title('對數譜');
grid on
%***************IFFT恢復************
xifft=ifft(y);
mag=real(xifft);
ti=(0:length(xifft)-1)/fs;
subplot(236);
plot(ti,mag);
xlabel('時間/s');
ylabel('幅值');
title('IFFT恢復后的波形');
grid on
圖像顯示
總結
以上是生活随笔為你收集整理的基于FFT的信号频谱分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 链表LinkedList的Java实现
- 下一篇: Matlab进行录制、存储、绘制、读取音