快速傅里叶变换(fft)的Matlab实现

clc
Fs=1000;%采样频率
T=1/Fs;%一个信号的采样时间,1/1000=0.001s
L=1000;%信号长度
t=(0:L-1)T;%时间向量:生成0-999之间的数乘以0.001就是0-1之间生成0-0.999
x=0.7
sin(2pi50t)+sin(2pi120t);%产生一个数据,作为我们的采样数据
y=x+2randn(size(t));%将上面的数据加上噪声,size(t)返回向量t的行列数
%y=x;%去掉上面的噪声,加上噪声会幅值会变化
plot(Fs
t(1:50),y(1:50));%绘图
grid on;%显示网格
title(‘Signal Corrupted with Zero-Mean Random Noise’);%均值是0的随机噪声
xlabel(‘time(milliseconds)’);%x轴时间毫秒
%NFFT=2^nextpow2(L);%将L转换为最近2的N次幂1024
NFFT=L;%去掉变换,这是两处的幅值正好与采集到的信号的幅值相等
Y=fft(y,NFFT)/L;%对y做快速傅里叶变换生成Y,这里为什么要除以L呢
f=Fs/2linspace(0,1,NFFT/2+1);%频率:0-1之间产生513个数据500
plot(f,2*abs(Y(1:NFFT/2+1)));%绘图,信号的模乘以2就是信号的幅值
title(‘Single-sided Amplitude Spectrum of y(t)’);%单边幅值谱
xlabel(‘Frequency(Hz)’);%x轴是频率
ylabel(‘y(t) Amp’);%y轴是信号小y的幅值

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值