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

基于Matlab的FFT滤波:谐波分析、频段清除与数据提取

基于matlab的FFT滤波,可以实现对simulink模型中示波器的波形数据或者外部mat数据、csv数据进行谐波分析(FFT)和自定义频段清除,对已有数据特定频段的数据进行提取也可以。 优点是滤波前后波形无相位滞后,幅值衰减可补偿,不足之处在于不支持实时滤波。 图一是将图二的信号(含三次谐波)进行140hz-150hz频段谐波清除前后的时域及频谱图,图3是对给定数据进行特定频段信号提取。

江湖救急!最近实验室师弟做电力谐波分析卡在滤波环节,正好翻出我两年前写的MATLAB频域滤波脚本。这玩意儿虽然不能实时处理,但对付示波器导出的实验数据是真香。直接上干货,教你怎么用FFT玩转自定义频段滤波。

先看个暴力操作:

% 读取任意格式数据(以CSV为例) rawData = readtable('scope_data.csv'); signal = rawData.Waveform; % 假设波形存储在Waveform列 Fs = 1e4; % 采样率自己填实测值 % 快速傅里叶开挂 N = length(signal); freqAxis = (-N/2:N/2-1)*(Fs/N); Y = fftshift(fft(signal));

这里有个坑:很多人直接用fft完事,但fftshift才是频谱对齐频率轴的关键。不信邪的可以注释掉这行,看看频谱图会不会左右镜像。

重点来了——频段清除黑魔法:

% 构造140-150Hz屠杀结界 killBand = (abs(freqAxis) > 140) & (abs(freqAxis) < 150); Y_clean = Y .* (1 - killBand'); % 转置防维度打架 % 回时域记得补偿幅值 filteredSignal = real(ifft(ifftshift(Y_clean))) * (2/N);

看到那个(2/N)没?这是补偿FFT变换的能量损失。曾经有个师兄没加这个系数,滤波后幅值腰斩,在组会上被老板怼了半小时...

基于matlab的FFT滤波,可以实现对simulink模型中示波器的波形数据或者外部mat数据、csv数据进行谐波分析(FFT)和自定义频段清除,对已有数据特定频段的数据进行提取也可以。 优点是滤波前后波形无相位滞后,幅值衰减可补偿,不足之处在于不支持实时滤波。 图一是将图二的信号(含三次谐波)进行140hz-150hz频段谐波清除前后的时域及频谱图,图3是对给定数据进行特定频段信号提取。

想提取特定频段?改个符号就行:

% 比如提取50-60Hz工频信号 extractBand = (abs(freqAxis) > 50) & (abs(freqAxis) < 60); Y_extract = Y .* extractBand';

这里有个骚操作:把提取后的频谱用hold on叠加到原频谱上,立马get到论文里的对比效果图。比Origin画图快多了,亲测组会前十分钟能出图。

验证环节不能少:

% 时域波形对比 subplot(2,1,1) plot(signal), hold on plot(filteredSignal) legend('原始信号','滤波后') % 频谱打脸验证 subplot(2,1,2) plot(freqAxis, abs(Y)), hold on plot(freqAxis, abs(Y_extract))

当看到滤波后的频谱在140-150Hz区间突然凹下去一块,那种满足感比吃鸡还刺激。不过要小心频谱泄露——加个汉宁窗?没必要!我们做的是事后分析,直接暴力截断更带劲。

实战经验:

  1. Simulink导出的.mat数据直接用load读取,比csv快10倍
  2. 碰到复数信号?把real()去掉,但记得检查虚部是否小于1e-5
  3. 采样率一定要准!去年有个妹子把50kHz设成50Hz,结果滤波后信号亲妈都不认识

最后说下局限性:这方法处理10秒长的1MHz采样数据时,我的拯救者Y7000会卡成PPT。所以...数据量大的时候还是搞个高通/低通滤波器模块吧,别跟自己电脑过不去。

http://www.jsqmd.com/news/518949/

相关文章:

  • 电商平台大数据建模:用户行为分析与推荐系统设计
  • 高阶滑模观测器在永磁同步电机无位置算法中的应用:性能卓越,无需低通滤波与相位补偿
  • Debian 13 KDE桌面美化全攻略:从Nordic主题到Papirus图标一步到位
  • 从原理到实践:手把手教你解决模拟版图中的天线效应问题
  • Hive数据一致性问题:分桶表_分区表数据倾斜与一致性保障技巧
  • 自动泊车系统中平行泊车与圆弧直线圆弧可行驶区域分析
  • 学习困难与儿童注意力缺陷的表现及其诊断标准是什么?
  • 为什么你的多线程程序总崩溃?可能是没用好pthread_setname_np这个隐藏功能
  • SDH网络中的POS接口配置实战——从理论到路由器部署
  • 基因编辑技术的伦理争议与投资风险
  • 出自动泊车MPC模型预测控制的路径跟踪(纯代码+运动学): 含误差图、前轮转角图、航向角图及动画展示
  • VirtualBox快速部署Debian12:从零开始的详细指南
  • Springer LaTeX投稿实战:常见编译问题与高效解决方案
  • x64dbg实战指南:从零开始掌握程序动态调试技巧
  • Pixel3刷机后必做的5件事:优化Android 12的隐藏设置与性能调校
  • 电荷泵实战:如何在EEPROM设计中避免寄生三极管效应(附电路图解析)
  • DevOps03-GitLab02-CI/CD03:Pipeline的job作业配置(variable、tags、stage、script、when、retry、need、parllel)
  • 1985-2024年企业合作专利数据
  • 用SmartPing替代Zabbix做轻量级网络监控:5分钟搞定跨机房延迟检测
  • DevOps03-GitLab02-CI/CD04:Pipeline运行控制【workflow控制、trigger触发、API触发】
  • hdWGCNA进阶技巧:利用kME值筛选关键基因的5个实用场景
  • 基于图腾柱PFC的单相整流器:Simulink仿真实现电网电流电压同相位的稳定输出技术
  • 毕业季论文救星:百考通AI如何用全链路智能方案,攻克学术写作的12道难关
  • FOFA查询语法实战:5分钟教你精准定位网络资产(附常用搜索模板)
  • 保姆级教程:用Twingate实现PVE/ESXi虚拟机远程访问(含Docker部署避坑指南)
  • 告别论文焦虑:百考通AI如何成为毕业季的学术“救星”?
  • 灵芝孢子粉品牌哪个原料好?2026高性价比灵芝孢子粉:破壁率99%的王者是谁 - 企业推荐官【官方】
  • 自动驾驶技术演进:路径规划与行为决策的突破与落地
  • 毕业季“求生”指南:如何用AI工具高效攻克论文重难点?
  • 【AI大模型评测】多模态基准测试:挑战与突破