【傅里叶变换的matlab实现】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

傅里叶变换在matlab中实现的详细解释。


一、傅里叶变换的matlab实现

x = 0:pi/30:2*pi;
data = cos(x).*sin(exp(x));
fs=100 %采样率
N=61     %数据处理点数
data_fft=abs(fft(data,N))/(N/2);
f=fs*(0:N)/N; %横轴频率刻度:最大值取决于fs
figure()
plot([1:61]/fs,data)
xlabel('时间/s')
figure()
plot(f(1:N/2),data_fft(1:N/2))
xlabel('频率/HZ')

二、逐步拆解

  • fs=100 采样率,单位HZ
  • N=128 变换数据点数
  • y=fft(x,N) 初始频率幅值:对y进行傅里叶变换,x为待变换信号
  • mag1=abs(y)
  • mag2=mag1/N*2 最终频率幅值/N*2

/N:采用N1点和N2点的相同频率的振幅是有不同的表现值,为了与真实振幅对应,需要将变换后结果乘以2除以N。
*2:信号的频谱是前后对称的,正负轴上都分配了幅值占比,而一般负频率没有物理意义,所以把正频率对应的频率幅值的两倍作为频谱幅值。

  • f=fs*(0:N)/N) 频率变化范围,即作为频谱x轴

虽然fft变换的时候没有输入fs,但是最终的频谱横轴是由fs决定的

  • plot(f,mag2) 原始频谱图(有一半重复)
  • plot(f(1:N/2),mag2(1:N/2))最终频谱图:原始频谱图的一半(此时f最大值只有原来的一半,符合奈奎斯特定律)
    注:fft描述的特定信号频率在整个信号中的占比大小,即频率幅值含义是频率占比,指该频率成分在整个信号所有频率中的占比。

在这里插入图片描述在这里插入图片描述


  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值