极简Matlab快速傅里叶变换FFT

简介

在试验数据处理中, 得到了一串数据, 经常需要提取频谱, 这里就需要运用快速傅里叶变换(FFT).

Matlab中可以方便地调用FFT, 但是FFT的结果是复数的对称谱, 为了绘制通常意义上的振幅频谱还需要做许多后处理.

本文给出了一个极简的代码, 以供大家参考和使用

代码

参考自https://www.mathworks.com/help/matlab/ref/fft.html#d126e476108

matlab 复制代码
% 已知参数
Fs = 1000;           % 采样率   
L = 1500;             %  数据向量长度

% 假定的原数据 ,当然也可以从文件中读取
T = 1/Fs;       
t = (0:L-1)*T;
S = 0.8 + 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
           
% 快速傅里叶变换
f = Fs/L*(0:(L/2));
Y = fft(S);
P2 = abs(Y/L);%对称谱
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);%单侧谱

% 绘制频谱图
plot(f,P1,"LineWidth",3) 
title("Single-Sided Amplitude Spectrum of S(t)")
xlabel("f (Hz)")
ylabel("|P1(f)|")

结果如下图所示, 可以清晰地看出0Hz, 50Hz, 120Hz的频率处的振幅分别是0.8, 0.7和1.0 . 与假定的原始数据完全一致.

相关推荐
走粥8 分钟前
选项式API与组合式API的区别
开发语言·前端·javascript·vue.js·前端框架
从此不归路9 分钟前
Qt5 进阶【7】网络请求与 REST API 实战:QNetworkAccessManager 深度应用
开发语言·c++·qt
郑州光合科技余经理22 分钟前
源码部署同城O2O系统:中台架构开发指南
java·开发语言·后端·架构·系统架构·uni-app·php
阿波罗尼亚22 分钟前
Java框架中的分层架构
java·开发语言·架构
踏歌~25 分钟前
终极指南:在 Windows 上配置 KDB+, JupyterQ 与 Python (embedPy)
开发语言·windows·python
Henry Zhu12332 分钟前
Qt Model/View架构详解(三):自定义模型
开发语言·qt
野生技术架构师33 分钟前
【面试题】为什么 Java 8 移除了永久代(PermGen)并引入了元空间(Metaspace)?
java·开发语言
Leo July34 分钟前
【Java】Java设计模式实战指南:从原理到框架应用
java·开发语言·设计模式
冬奇Lab34 分钟前
【Kotlin系列13】DSL设计:构建类型安全的领域语言
开发语言·安全·kotlin
2501_944521591 小时前
Flutter for OpenHarmony 微动漫App实战:分享功能实现
android·开发语言·javascript·flutter·ecmascript