news 2026/5/10 21:22:04

直接上干货,今天手把手教你在MATLAB里用FFT搞信号频谱分析。准备好你的MATLAB 2018b以上版本,咱们边写代码边唠嗑

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
直接上干货,今天手把手教你在MATLAB里用FFT搞信号频谱分析。准备好你的MATLAB 2018b以上版本,咱们边写代码边唠嗑

matlab fft 快速傅里叶变换 双边谱,单边谱,相位谱 基于matlab2018b及以上版本实现 对信号做fft,然后绘制其双边谱,单边谱,和对应的相位谱 有详细介绍并附带注释,保证可以运行 附带一份数据,可以查看数据格式来调整你的数据最后使用代码运行。

先来个实战案例:假设采样频率Fs=1000Hz,采样时间1秒。构造个含50Hz和120Hz的正弦波信号,加个随机噪声更有真实感:

Fs = 1000; % 采样率 T = 1/Fs; % 采样间隔 L = 1000; % 信号长度 t = (0:L-1)*T; % 时间轴 S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); % 原始信号 X = S + 2*randn(size(t)); % 加噪版本

先看原始信号长啥样:

figure(1) plot(Fs*t(1:100),X(1:100)) % 显示前0.1秒 title('原始信号(含噪声)') xlabel('时间 (ms)')

双边谱绘制:

Y = fft(X); % 核心就这一句,直接调用fft P2 = abs(Y/L); % 双边幅度谱计算 P1 = P2(1:L/2+1); % 截取前半段 P1(2:end-1) = 2*P1(2:end-1); % 能量守恒修正 f = Fs*(0:(L/2))/L; % 频率轴生成 figure(2) plot(f,P1) title('单边幅频特性') xlabel('频率 (Hz)') ylabel('幅度')

看到这可能有疑问:为啥要截一半还乘2?因为FFT结果是对称的,负频率部分其实是正频率的镜像。实际工程中更常用单边谱,直接把能量集中到正频率部分。

相位谱的坑要注意:

phase = angle(Y(1:L/2+1)); % 取相位角 phase_unwrap = unwrap(phase); % 解除相位缠绕 figure(3) subplot(2,1,1) plot(f,phase*180/pi) title('原始相位谱') subplot(2,1,2) plot(f,phase_unwrap*180/pi) title('解缠绕相位谱')

这里用unwrap函数解决相位跳变问题,实测发现当信号存在噪声时,相位谱在非信号频率点会出现随机波动,这是正常现象。

matlab fft 快速傅里叶变换 双边谱,单边谱,相位谱 基于matlab2018b及以上版本实现 对信号做fft,然后绘制其双边谱,单边谱,和对应的相位谱 有详细介绍并附带注释,保证可以运行 附带一份数据,可以查看数据格式来调整你的数据最后使用代码运行。

完整代码套餐:

% 数据生成部分 Fs = 1000; T = 1/Fs; L = 1000; t = (0:L-1)*T; S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); X = S + 2*randn(size(t)); % FFT计算 Y = fft(X); P2 = abs(Y/L); P1 = P2(1:L/2+1); P1(2:end-1) = 2*P1(2:end-1); f = Fs*(0:(L/2))/L; % 绘图全家桶 figure subplot(3,1,1) plot(f,P1) title('单边幅频特性') xlabel('Hz') subplot(3,1,2) plot(f,20*log10(P1)) % 转dB单位更直观 title('对数幅频特性') xlabel('Hz') phase = angle(Y(1:L/2+1)); subplot(3,1,3) plot(f,unwrap(phase)*180/pi) title('解缠绕相位谱(度)') xlabel('Hz') % 补充:查看你的数据格式时注意 % 如果是导入外部数据,确保数据是列向量 % 可通过X = your_data(:,1); 选取所需通道

数据适配提示:

当使用自己的数据时:

  1. 确认数据是单列向量
  2. 调整Fs为实际采样率
  3. 数据长度L需要是偶数(方便截断)
  4. 噪声过大会淹没信号特征(可通过加窗改善)

跑完代码应该能看到在50Hz和120Hz处有明显的谱峰,相位谱在这两个点有明确相位值(其他位置是噪声相位随机分布)。如果发现频谱泄露严重,下次可以聊聊加窗技巧。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 23:42:29

区块链商业价值预测数据分析

摘要:根据Gartner数据,区块链商业价值发展可分为三个阶段:探索期(2018-2022)年均增长22.6%,加速期(2023-2027)年均增长55.2%,成熟期(2028-2030)年均增长51.7%。预计2030年市场规模将达1360亿美元,复合年增长…

作者头像 李华
网站建设 2026/5/10 10:11:14

HCCL Profiling通信耗时埋点与Timeline生成

摘要 在大规模分布式训练中,通信效率直接决定整体性能。HCCL Profiling通过精准的通信操作耗时埋点,生成可视化Timeline,为性能瓶颈定位提供数据支撑。本文将深度解析/hccl/profiler/trace_collector.cpp的实现机制,演示AllReduc…

作者头像 李华
网站建设 2026/5/9 16:57:10

如何使用PHP实现500M以上文件夹的批量上传方案?

技术开发日记 - 毕业设计《企业级加密文件管理系统》攻坚实录 学生:陕西某高校软件工程大三学生 目标:打造高含金量毕业设计求职作品集核心项目 一、需求分析与技术选型 1. 核心需求拆解 军工级加密要求:地质局客户要求SM4国密算法传输&…

作者头像 李华
网站建设 2026/5/8 18:41:14

美妆跨境品牌Rituals从0到10亿的关键策略

Rituals官网首家线下门店2000年在阿姆斯特丹开业,如今门店已遍布纽约至巴黎。品牌产品涵盖护肤、身体护理、彩妆及香薰蜡烛等多个品类。25年间,其年收入曾达9.5633亿美元。Rituals的核心竞争优势,在于其精准的品牌定位。品牌并未将自身局限于…

作者头像 李华
网站建设 2026/5/10 7:31:40

PHP在http环境下如何解决500M视频大文件上传问题?

一个PHP程序员的"20G文件上传"奇幻漂流记 各位互联网"卷王"们好啊!我是那个在福建写PHP写到秃头的码农老王。今天要跟大家分享一个让我哭笑不得的外包需求——客户要我用100元预算实现20G大文件上传下载系统!(是的&…

作者头像 李华
网站建设 2026/5/8 22:10:12

基于蒙特卡洛模拟的大规模电动车充电模型 在matlab中用蒙特卡洛算法对电动汽车充电负荷进行模拟

基于蒙特卡洛模拟的大规模电动车充电模型 在matlab中用蒙特卡洛算法对电动汽车充电负荷进行模拟,可自己修改电动汽车数量,复现。 动汽车大规模入网充电时会导致系统内负载峰值拔高的问题,和分布式电源一样,都会对电网的安全稳定运…

作者头像 李华