📄 fft.m
字号:
clear all
%*************************************************************************%
%*************************************************************************%
%***************1.正弦波****************%
fs=100;%设定采样频率
N=128;
n=0:N-1;
t=n/fs;
f0=10;%设定正弦信号频率
%生成正弦信号
x=sin(2*pi*f0*t);
figure(1);
subplot(231);
plot(t,x);%作正弦信号的时域波形
xlabel('t');
ylabel('y');
title('正弦信号时域波形');
grid;
%进行FFT变换并做频谱图
y=fft(x,N);%进行fft变换
mag=abs(y);%求幅值
f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换
figure(1);
subplot(232);
plot(f,mag);%做频谱图
axis([0,100,0,80]);
xlabel('频率(Hz)');
ylabel('幅值');
title('正弦信号幅频谱图N=128');
grid;
%用IFFT恢复原始信号
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转换的正弦信号波形');
grid;
%****************2.单位冲激序列****************%
fs=10;%设定采样频率
t=-5:0.1:5;
x=zeros(1,100);
x(50)=100000;
figure(2);
subplot(231);
plot(t(1:100),x);%作单位冲激序列的时域波形
xlabel('t');
ylabel('y');
title('单位冲激序列时域波形');
grid;
%进行FFT变换并做频谱图
y=fft(x);%进行fft变换
mag=abs(y);%求幅值
f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换
figure(2);
subplot(232);
plot(f,mag);%做频谱图
xlabel('频率(Hz)');
ylabel('幅值');
title('单位冲激序列幅频谱图');
grid;
%用IFFT恢复原始信号
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转换的单位冲激序列波形');
grid;
%****************3.单位阶跃序列****************%
fs=10;%设定采样频率
t=-5:0.1:5;
x=ones(1,100);
x(50)=100000;
figure(3);
subplot(231);
plot(t(1:100),x);%作单位阶跃序列的时域波形
xlabel('t');
ylabel('y');
title('单位阶跃序列时域波形');
grid;
%进行FFT变换并做频谱图
y=fft(x);%进行fft变换
mag=abs(y);%求幅值
f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换
figure(3);
subplot(232);
plot(f,mag);%做频谱图
xlabel('频率(Hz)');
ylabel('幅值');
title('单位阶跃序列幅频谱图');
grid;
%用IFFT恢复原始信号
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转换的单位阶跃序列波形');
grid;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -