当前位置: 首页 > news >正文

极简Matlab快速傅里叶变换FFT

简介

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

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

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

代码

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

% 已知参数
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. 与假定的原始数据完全一致.
在这里插入图片描述

相关文章:

  • 顶顶通呼叫中心中间件机器人压力测试配置(mod_cti基于FreeSWITCH)
  • Spring5系列学习文章分享---第五篇(事务概念+特性+案例+注解声明式事务管理+参数详解 )
  • 缓存技术—redis
  • 网络安全03---Nginx 解析漏洞复现
  • LightDB 24.1 UNION支持null类型匹配
  • 光明之盒:揭开可解释性人工智能的神秘面纱
  • 一种解决常用存储设备无法被电脑识别的方法
  • 【开源】基于JAVA语言的二手车交易系统
  • js中的内置对象、数学对象、日期对象、数组对象、字符串对象
  • spark-flink设计思想之吸星大法-1
  • jQuery HTML - 设置 —— W3school 详解 简单易懂(十二)
  • 【go】Ubuntu 22.04 LTS golang go-ethereum编译安装
  • C#使用TimeSpan对象获取时间间隔
  • SpringBoot3集成Zookeeper
  • 单片机学习笔记---独立按键控制LED显示二进制
  • Apache的80端口被占用以及访问时报错403
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Joomla 2.x, 3.x useful code cheatsheet
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 分类模型——Logistics Regression
  • 面试总结JavaScript篇
  • 微服务框架lagom
  • 物联网链路协议
  • 一道面试题引发的“血案”
  • 以太坊客户端Geth命令参数详解
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • puppet连载22:define用法
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • #Linux(make工具和makefile文件以及makefile语法)
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (学习日记)2024.02.29:UCOSIII第二节
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • .net framework profiles /.net framework 配置
  • .net framework4与其client profile版本的区别
  • .net mvc 获取url中controller和action
  • .NET 药厂业务系统 CPU爆高分析
  • ::before和::after 常见的用法
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @EventListener注解使用说明
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • [Android]Tool-Systrace
  • [DevOps云实践] 彻底删除AWS云资源
  • [HCTF 2018]WarmUp (代码审计)
  • [I2C]I2C通信协议详解(一) --- 什么是I2C
  • [LeetCode] Wildcard Matching
  • [Linux] 常用命令--版本信息/关机重启/目录/文件操作
  • [Power Query] 数据的拆分、提取与合并
  • [Unity3D ARPG网络游戏编程实践] 网络连接 :unity NetWork与socket的对比(一)
  • [VS] 诊断工具,检测内存泄漏,进行内存调优
  • [zz]Linux性能测试工具Lmbench介绍和使用说明
  • [动态规划] (十四) 简单多状态 LeetCode LCR 091.粉刷房子