matlab快速傅里叶变换(三个matlab程序介绍)

一种积分变换,它来源于函数的傅里叶积分表示。积分 (1) 称为ƒ 的傅里叶积分。周期函数在一定条件下可以展成傅里叶级数,而在(-∞,∞)上定义的非周期函数ƒ,显然不能用三角级数来表示。但是J.-B.-J.傅里叶建议把ƒ表示成所谓傅里叶积分的方法。

傅里叶变换在物理学、电子类学科、数论、组合数学、信号处理、概率论、统计学、密码学、声学、光学、海洋学、结构动力学等领域都有着广泛的应用(例如在信号处理中,傅里叶变换的典型用途是将信号分解成幅值谱——显示与频率对应的幅值大小)。

傅里叶变换(fft)matlab程序一

Fs = 128; % 采样频率
T = 1/Fs; % 采样时间
L = 256; % 信号长度
t = (0:L-1)T; % 时间
x = 5 + 7
cos(2pi15t - 30pi/180)+ 3cos(2pi40t - 90pi/180); %cos为底原始信号
y = x + randn(size(t)); %添加噪声
figure;
plot(t,y)
title(‘加噪声的信号’)
xlabel(‘时间(s)’)
N = 2^nextpow2(L); %采样点数,采样点数越大,分辨的频率越精确,N》=L,超出的部分信号补为0
Y = fft(y,N)/N
2; %除以N乘以2才是真实幅值,N越大,幅值精度越高
f = Fs/N*(0:1:N-1); %频率
A = abs(Y); %幅值
P = angle(Y); %相值
figure;
subplot(211);
plot(f(1:N/2),A(1:N/2)); %函数fft返回值的数据结构具有对称性,因此我们只取前一半
title(‘幅值频谱’);
xlabel(‘频率(Hz)’);
ylabel(‘幅值’);
subplot(212);
plot(f(1:N/2),P(1:N/2));
title(‘相位频谱’);
xlabel(‘频率(Hz)’);
ylabel(‘相位’);

傅里叶变换(fft)matlab程序二

tp=0:2048; % 时域数据点数N
yt=sin(0.08pitp).*exp(-tp/80); % 生成正弦衰减函数
plot(tp,yt),axis([0,400,-1,1]),% 绘正弦衰减曲线
t=0:800/2048:800; % 频域点数Nf
f=0:1.25:1000;
yf=fft(yt); % 快速傅立叶变换
ya=abs(yf(1:801)); % 幅值
yp=angle(yf(1:801))*180/pi; % 相位
yr=real(yf(1:801)); % 实部
yi=imag(yf(1:801)); % 虚部
figure
subplot(2,2,1)
plot(f,ya),axis([0,200,0,60]) % 绘制幅值曲线
title(‘幅值曲线’)
subplot(2,2,2)
plot(f,yp),axis([0,200,-200,10]) % 绘制相位曲线
title(‘相位曲线’)
subplot(2,2,3)
plot(f,yr),axis([0,200,-40,40]) % 绘制实部曲线
title(‘实部曲线’)
subplot(2,2,4)
plot(f,yi),axis([0,200,-60,10])% 绘制虚部曲线
title(‘虚部曲线’)

傅里叶变换(fft)matlab程序三

%% 执行FFT点数与原信号长度相等(100点)
% 构建原信号
N=100; % 信号长度(变量)
Fs=1; % 采样频率
dt=1/Fs; % 采样间隔
t=[0:N-1]dt; % 时间序列
xn=cos(2
pi0.24[0:99])+cos(2pi0.26*[0:99]);
xn=[xn,zeros(1,N-100)]; % 原始信号的值序列
subplot(3,2,1) % 变量
plot(t,xn)% 绘出原始信号
xlabel(‘时间/s’),
title(‘原始信号(向量长度为100)’)% 变量
% FFT分析
NN=N; % 执行100点FFT
XN=fft(xn,NN)/NN; % 共轭复数,具有对称性
f0=1/(dtNN); % 基频
f=[0:ceil((NN-1)/2)]f0; % 频率序列
A=abs(XN); % 幅值序列
subplot(3,2,2),stem(f,2
A(1:ceil((NN-1)/2)+1)),xlabel(‘频率/Hz’) % 绘制频谱(变量)
axis([0 0.5 0 1.2])% 调整坐标范围
title(‘执行点数等于信号长度(单边谱100执行点)’); % 变量
%% 执行FFT点数大于原信号长度
% 构建原信号
N=100; % 信号长度(变量)
Fs=1; % 采样频率
dt=1/Fs; % 采样间隔
t=[0:N-1]dt; % 时间序列
xn=cos(2
pi
0.24*[0:99])+cos(2pi0.26*[0:99]);
xn=[xn,zeros(1,N-100)]; % 原始信号的值序列
subplot(3,2,3) % 变量
plot(t,xn) % 绘出原始信号
xlabel(‘时间/s’),title(‘原始信号(向量长度为100)’)% 变量
% FFT分析
NN=120; % 执行120点FFT(变量)
XN=fft(xn,NN)/NN; % 共轭复数,具有对称性
f0=1/(dtNN); % 基频
f=[0:ceil((NN-1)/2)]f0; % 频率序列
A=abs(XN); % 幅值序列
subplot(3,2,4),stem(f,2
A(1:ceil((NN-1)/2)+1)),xlabel(‘频率/Hz’) % 绘制频谱(变量)
axis([0 0.5 0 1.2])% 调整坐标范围
title(‘执行点数大于信号长度(单边谱120执行点)’); % 变量
%% 执行FFT点数与原信号长度相等(120点)
% 构建原信号
N=120; % 信号长度(变量)
Fs=1; % 采样频率
dt=1/Fs; % 采样间隔
t=[0:N-1]dt; % 时间序列
xn=cos(2
pi
0.24*[0:99])+cos(2pi0.26*[0:99]);
xn=[xn,zeros(1,N-100)]; % 原始信号的值序列
subplot(3,2,5)% 变量
plot(t,xn)% 绘出原始信号
xlabel(‘时间/s’),title(‘原始信号(向量长度为120)’)% 变量
% FFT分析
NN=120; % 执行120点FFT(变量)
XN=fft(xn,NN)/NN; % 共轭复数,具有对称性
f0=1/(dt*NN); % 基频
f=[0:ceil((NN-1)/2)]f0; % 频率序列
A=abs(XN); % 幅值序列
subplot(3,2,6),stem(f,2
A(1:ceil((NN-1)/2)+1)),xlabel(‘频率/Hz’) % 绘制频谱(变量)
axis([0 0.5 0 1.2]) % 调整坐标范围
title(‘执行点数等于信号长度(单边谱120执行点)’); % 变量

  • 11
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值