fft matlab代码,FFT的matlab程序代码
內(nèi)容
1.用Matlab產(chǎn)生正弦波,矩形波,以及白噪聲信號(hào),并顯示各自時(shí)域波形圖
2.進(jìn)行FFT變換,顯示各自頻譜圖,其中采樣率,頻率、數(shù)據(jù)長度自選
3.做出上述三種信號(hào)的均方根圖譜,功率圖譜,以及對(duì)數(shù)均方根圖譜
4.用IFFT傅立葉反變換恢復(fù)信號(hào),并顯示恢復(fù)的正弦信號(hào)時(shí)域波形圖
源程序
%*************************************************************************%
% FFT實(shí)踐及頻譜分析 %
%*************************************************************************%
%*************************************************************************%
%***************1.正弦波****************%
fs=100;%設(shè)定采樣頻率
N=128;
n=0:N-1;
t=n/fs;
f0=10;%設(shè)定正弦信號(hào)頻率
%生成正弦信號(hào)
x=sin(2*pi*f0*t);
figure(1);
subplot(231);
plot(t,x);%作正弦信號(hào)的時(shí)域波形
xlabel('t');
ylabel('y');
title('正弦信號(hào)y=2*pi*10t時(shí)域波形');
grid;
%進(jìn)行FFT變換并做頻譜圖
y=fft(x,N);%進(jìn)行fft變換
mag=abs(y);%求幅值
f=(0:length(y)-1)'*fs/length(y);%進(jìn)行對(duì)應(yīng)的頻率轉(zhuǎn)換
figure(1);
subplot(232);
plot(f,mag);%做頻譜圖
axis([0,100,0,80]);
xlabel('頻率(Hz)');
ylabel('幅值');
title('正弦信號(hào)y=2*pi*10t幅頻譜圖N=128');
grid;
%求均方根譜
sq=abs(y);
figure(1);
subplot(233);
plot(f,sq);
xlabel('頻率(Hz)');
ylabel('均方根譜');
title('正弦信號(hào)y=2*pi*10t均方根譜');
grid;
%求功率譜
power=sq.^2;
figure(1);
subplot(234);
plot(f,power);
xlabel('頻率(Hz)');
ylabel('功率譜');
title('正弦信號(hào)y=2*pi*10t功率譜');
grid;
%求對(duì)數(shù)譜
ln=log(sq);
figure(1);
subplot(235);
plot(f,ln);
xlabel('頻率(Hz)');
ylabel('對(duì)數(shù)譜');
title('正弦信號(hào)y=2*pi*10t對(duì)數(shù)譜');
grid;
%用IFFT恢復(fù)原始信號(hào)
xifft=ifft(y);
magx=real(xifft);
ti=[0:length(xifft)-1]/fs;
figure(1);
subplot(236);
plot(ti,magx);
xlabel('t');
ylabel('y');
title('通過IFFT轉(zhuǎn)換的正弦信號(hào)波形');
grid;
%****************2.矩形波****************%
fs=10;%設(shè)定采樣頻率
t=-5:0.1:5;
x=rectpuls(t,2);
x=x(1:99);
figure(2);
subplot(231);
plot(t(1:99),x);%作矩形波的時(shí)域波形
xlabel('t');
ylabel('y');
title('矩形波時(shí)域波形');
grid;
%進(jìn)行FFT變換并做頻譜圖
y=fft(x);%進(jìn)行fft變換
mag=abs(y);%求幅值
f=(0:length(y)-1)'*fs/length(y);%進(jìn)行對(duì)應(yīng)的頻率轉(zhuǎn)換
figure(2);
subplot(232);
plot(f,mag);%做頻譜圖
xlabel('頻率(Hz)');
ylabel('幅值');
title('矩形波幅頻譜圖');
grid;
%求均方根譜
sq=abs(y);
figure(2);
subplot(233);
plot(f,sq);
xlabel('頻率(Hz)');
ylabel('均方根譜');
title('矩形波均方根譜');
grid;
%求功率譜
power=sq.^2;
figure(2);
subplot(234);
plot(f,power);
xlabel('頻率(Hz)');
ylabel('功率譜');
title('矩形波功率譜');
grid;
%求對(duì)數(shù)譜
ln=log(sq);
figure(2);
subplot(235);
plot(f,ln);
xlabel('頻率(Hz)');
ylabel('對(duì)數(shù)譜');
title('矩形波對(duì)數(shù)譜');
grid;
%用IFFT恢復(fù)原始信號(hào)
xifft=ifft(y);
magx=real(xifft);
ti=[0:length(xifft)-1]/fs;
figure(2);
subplot(236);
plot(ti,magx);
xlabel('t');
ylabel('y');
title('通過IFFT轉(zhuǎn)換的矩形波波形');
grid;
%****************3.白噪聲****************%
fs=10;%設(shè)定采樣頻率
t=-5:0.1:5;
x=zeros(1,100);
x(50)=100000;
figure(3);
subplot(231);
plot(t(1:100),x);%作白噪聲的時(shí)域波形
xlabel('t');
ylabel('y');
title('白噪聲時(shí)域波形');
grid;
%進(jìn)行FFT變換并做頻譜圖
y=fft(x);%進(jìn)行fft變換
mag=abs(y);%求幅值
f=(0:length(y)-1)'*fs/length(y);%進(jìn)行對(duì)應(yīng)的頻率轉(zhuǎn)換
figure(3);
subplot(232);
plot(f,mag);%做頻譜圖
xlabel('頻率(Hz)');
ylabel('幅值');
title('白噪聲幅頻譜圖');
grid;
%求均方根譜
sq=abs(y);
figure(3);
subplot(233);
plot(f,sq);
xlabel('頻率(Hz)');
ylabel('均方根譜');
title('白噪聲均方根譜');
grid;
%求功率譜
power=sq.^2;
figure(3);
subplot(234);
plot(f,power);
xlabel('頻率(Hz)');
ylabel('功率譜');
title('白噪聲功率譜');
grid;
%求對(duì)數(shù)譜
ln=log(sq);
figure(3);
subplot(235);
plot(f,ln);
xlabel('頻率(Hz)');
ylabel('對(duì)數(shù)譜');
title('白噪聲對(duì)數(shù)譜');
grid;
%用IFFT恢復(fù)原始信號(hào)
xifft=ifft(y);
magx=real(xifft);
ti=[0:length(xifft)-1]/fs;
figure(3);
subplot(236);
plot(ti,magx);
xlabel('t');
ylabel('y');
title('通過IFFT轉(zhuǎn)換的白噪聲波形');
grid;
總結(jié)
以上是生活随笔為你收集整理的fft matlab代码,FFT的matlab程序代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工作381-兼容移动端头部
- 下一篇: [css] 说说你对hasLayout