基于matlab的FFT频谱分析,数字滤波器。 可进行谐波提取,可实现对仿真模型中示波器的波形...
基于matlab的FFT频谱分析,数字滤波器。 可进行谐波提取,可实现对仿真模型中示波器的波形数据或者外部采样数据进行频谱分析和自定义频段清除,也可以对已有数据特定频段的数据进行提取。 滤波前后波形无相位滞后,幅值无衰减。 图a是原始信号,含三次,五次谐波,图b是原始信号频谱分析(FFT)结果,图c是滤除三次和五次谐波信号后的对比结果,图d是滤波后波形频谱分析(FFT分析)结果。
概述
本文介绍了一套基于 MATLAB 实现的信号频谱分析与数字滤波系统,适用于电力系统谐波分析、实验数据处理、仿真波形后处理等工程场景。该系统支持两类典型输入:一是通过程序合成的多频正弦叠加信号(用于验证与教学),二是从外部导入的实际采样数据(如示波器导出的 .mat 文件)。系统核心功能包括快速傅里叶变换(FFT)频谱分析、椭圆型低通数字滤波器设计与应用,以及滤波前后信号的时域与频域对比可视化。
功能架构
整个系统采用模块化设计,主要包含以下三个功能模块:
- 信号输入模块:支持程序内建合成信号或外部
.mat文件数据导入; - 频谱分析模块:对原始信号执行 FFT,生成单边幅频谱图;
- 数字滤波模块:基于椭圆滤波器设计低通滤波器,使用零相位滤波(
filtfilt)处理信号,并对比滤波前后效果。
系统最终以 2×2 子图形式呈现结果:左上为原始信号时域波形,左下为原始信号频谱;右上为滤波前后时域对比,右下为滤波后信号频谱。
信号输入机制
系统提供两种输入路径:
- 合成信号路径:在
aFFTFilter.m中,程序构造一个包含基波(50 Hz)、三次谐波(150 Hz)和五次谐波(250 Hz)的复合正弦信号,采样频率设为最高谐波频率的 10 倍(即 2500 Hz),确保满足奈奎斯特采样定理。该路径适用于算法验证与教学演示。
- 外部数据路径:在
bFFTFilter.m中,程序加载名为U1.mat的 MATLAB 数据文件。该文件预期包含两列数据:第一列为时间序列,第二列为对应的采样幅值。用户可根据实际数据结构调整读取范围(如起始点、数据长度)和采样频率。
两种路径均支持灵活配置,便于适配不同来源的实测或仿真数据。
频谱分析流程
频谱分析基于标准 FFT 算法实现,流程如下:
- 对输入信号执行
fft()变换; - 计算双边谱幅值并归一化;
- 提取单边谱(仅保留 0 至 Nyquist 频率部分);
- 对非直流分量进行幅值加倍(补偿能量对称性);
- 构建对应频率轴,并以柱状图形式绘制频谱。
该流程严格遵循数字信号处理中的标准 FFT 幅值校正方法,确保频谱幅值具有物理意义,便于后续谐波成分识别与定量分析。
数字滤波器设计与应用
系统采用 椭圆型(Elliptic)低通滤波器 实现频段选择性抑制。椭圆滤波器在给定阶数下具有最陡的过渡带,适合需要严格截止特性的场景。

基于matlab的FFT频谱分析,数字滤波器。 可进行谐波提取,可实现对仿真模型中示波器的波形数据或者外部采样数据进行频谱分析和自定义频段清除,也可以对已有数据特定频段的数据进行提取。 滤波前后波形无相位滞后,幅值无衰减。 图a是原始信号,含三次,五次谐波,图b是原始信号频谱分析(FFT)结果,图c是滤除三次和五次谐波信号后的对比结果,图d是滤波后波形频谱分析(FFT分析)结果。

滤波器设计参数包括:
- 通带截止频率(fp):允许通过的最高频率;
- 阻带起始频率(fs):开始显著衰减的频率;
- 通带波纹(rp):通带内允许的最大波动(单位:dB);
- 阻带衰减(rs):阻带内最小衰减量(单位:dB)。
通过 ellipord 自动计算满足指标的最小滤波器阶数 N 和归一化截止频率 wp,再调用 ellip 生成滤波器传递函数的分子 B 与分母 A 系数。

关键的是,系统使用 filtfilt 函数进行滤波处理。该函数执行零相位双向滤波,有效避免了传统 IIR 滤波器引入的相位失真,特别适用于离线数据分析场景,保证滤波后信号的时域波形不失真。
可视化与结果对比
系统统一采用 2×2 子图布局,实现直观对比:
- (a) 原始信号时域波形:展示输入信号的时间演化;
- (b) 原始信号频谱:揭示信号的频率组成,便于识别谐波成分;
- (c) 滤波前后时域对比:蓝色实线为原始信号,红色虚线为滤波后信号,清晰体现高频成分被抑制的效果;
- (d) 滤波后频谱:验证滤波器在频域的实际抑制效果,确认目标频段已被有效清除。
所有图形均采用中英混排字体设置(中文用宋体,英文用 Times New Roman),符合国内工程文档规范,并统一设置坐标轴标签、标题、网格线与字体大小,确保图表专业、清晰、可读性强。
应用场景与扩展性
本系统可广泛应用于以下领域:
- 电力系统谐波监测:提取基波并滤除高次谐波;
- 实验数据去噪:清除传感器采集信号中的高频干扰;
- 仿真后处理:对 Simulink 示波器输出数据进行频域分析;
- 教学演示:直观展示 FFT 与数字滤波原理。
系统具有良好的扩展性:用户可轻松修改滤波器类型(如切换为 Butterworth 或 Chebyshev)、调整滤波频段、支持带通/高通滤波,甚至扩展为多通道信号处理框架。
总结
该 MATLAB 实现提供了一套完整、可靠、易用的频谱分析与数字滤波解决方案。其设计兼顾理论严谨性与工程实用性,代码结构清晰,参数配置灵活,可视化效果专业,是信号处理初学者与工程技术人员的理想工具。通过合理配置采样参数与滤波指标,用户可高效完成从原始波形到目标频段提取的全流程分析任务。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)