通过MATLAB实现FFT

1、任务要求实现

对信号 x = s i n ( 2 π f 0 t ) x=sin(2πf_0t) x=sin(2πf0t)进行频谱分析,用MATLAB仿真。选取抽样频率为 f s = 100 H z fs=100Hz fs=100Hz,

2、MATLAB实现

使用MATLAB来编写,首先我们先画出该函数的原始图像,第二个图显示的是进行FFT变换,第三个其IFFT变换后的原始图像。

fs=100;                 %设定采样频率
N=128;
t=[0:1/fs:(N-1)/fs];    %采样时间
f0=10;                  %设定正弦信号频率 
%生成正弦信号
x = sin(2*pi*f0*t); 
subplot(311);
plot(t,x);
xlabel('t');
ylabel('y');
title('正弦信号y=2*pi*10t时域波形');
grid

%进行FFT变换
y=fft(x,N);             %进行fft变换 
mag=abs(y);             %求幅值 
m=length(y);
f=(0:m/2-1)'*fs/m;      %进行对应的频率转换
subplot(312);
plot(f,mag(1:m/2));     %做频谱图
axis([0,100,0,80]);
xlabel('频率(Hz)');
ylabel('幅值');
title('正弦信号y=2*pi*10t幅频谱图N=128');
grid;

%用IFFT恢复
xifft=ifft(y);
magx=real(xifft);
ti=[0:length(xifft)-1]/fs;
subplot(313);
plot(ti,magx);
xlabel('t');
ylabel('y');
title('通过IFFT转换的正玹信号');
grid;

3、结果显示

通过MATLAB实现FFT_第1张图片

你可能感兴趣的:(通过MATLAB实现FFT)