基于MATLAB的通用信号分析与教学演示平台
项目介绍
本项目是一个集成化的信号处理教学与工程分析工具,采用 MATLAB App Designer 架构开发。平台旨在为用户提供一个直观的交互环境,用于信号的产生、时域统计分析、频域特征提取以及数字滤波处理。通过该平台,用户可以实时观察参数变化对信号波形及频谱的影响,是理解信号处理核心概念的理想教学辅助软件及初级科研工具。
功能特性
- 多类型信号源生成:支持正弦波、方波、锯齿波及高斯白噪声的动态生成,允许自主配置采样率、频率、幅值、相位和采样点数。
- 全方位时域特征提取:自动计算并呈现信号的均值、标准差、峰峰值、均方根值、偏度及峰度等关键统计指标。
- 高精度频域分析:集成快速傅里叶变换(FFT),提供单边幅度谱与相位谱的线性显示。
- 能量分布评估:通过周期图法(Periodogram)计算并绘制信号的功率谱密度(PSD),支持单位转换为分贝(dB/Hz)。
- 交互式数字滤波:内置四阶巴特沃斯(Butterworth)滤波器,覆盖低通、高通、带通、带阻四种模式,支持零相位滤波以消除相位差。
- 灵活的数据交互:兼容 CSV 与 MAT 格式的文件导入,并支持将处理后的滤波数据导出为 CSV 文件。
使用方法
- 参数配置:在左侧控制面板中选择信号类型,并输入采样频率、信号频率等基本物理参数。
- 信号产生:点击“产生信号”按钮,系统将根据设定参数计算波形,并触发全流程分析。
- 结果观测:
- 在“时域波形”选项卡查看原始信号。
- 在“频谱分析”选项卡查看信号的频率构成与相位分布。
- 在“功率谱密度”选项卡分析信号能量分布。
- 在“滤波对比”选项卡调节截止频率,观察滤波前后的波形重叠对比效果。
- 统计分析:查看右下角的统计表格,获取当前信号的数学特征。
- 外部数据处理:点击“导入外部数据”,选择本地 CSV 或 MAT 文件,系统将自动加载并按当前采样率进行分析。
- 数据保存:滤波完成后,点击“导出滤波后数据”可将计算结果保存至本地。
---
系统逻辑与实现细节
#### 1. 界面架构逻辑
程序采用 uifigure 结合 uigridlayout 实现自适应布局。主界面分为左侧控制区(导航与输入)、右上展示区(选项卡式多维视图)和右下结果区(统计指标表格)。数据在各模块间通过存储于 app.Data 结构体中的变量进行传递,确保了界面响应逻辑与数据计算逻辑的解耦。
#### 2. 信号发生算法
- 正弦/方波/锯齿波:基于时间序列
t = (0:N-1)/fs,利用 sin、square 和 sawtooth 函数生成。 - 白噪声:利用
randn 函数生成符合标准正态分布的随机信号。 - 参数动态响应:所有生成函数均绑定偏移量
phi 与幅值 A,确保物理意义的一致性。
#### 3. 频域分析实现
- 幅度谱:执行
fft 后,取模并根据采样点数 N 进行归一化处理。通过提取前一半频谱分量并补偿 2 倍幅值(除直流分量处),获得物理意义明确的单边幅度谱。 - 相位谱:利用
angle 函数计算 FFT 结果的相角,并提取对应的单边频率部分进行绘制。 - 功率谱密度:采用
periodogram 算法配合矩形窗,计算信号在单位频率上的平均功率。
#### 4. 统计特征计算
系统调用 MATLAB 内置的高阶统计量函数:
- 使用
rms 计算信号的有效值。 - 使用
skewness 和 kurtosis 计算偏度(描述分布对称性)与峰度(描述分布陡峭度)。 - 使用
mean、std 和极值差计算基础描述统计量。
#### 5. 数字滤波逻辑
- 滤波器设计:基于用户输入的截止频率,利用
butter 函数动态计算四阶巴特沃斯滤波器的系数 b 和 a。 - 信号处理:采用
filtfilt 实现双向零相位滤波。相比于普通的 filter 函数,该方法能有效避免滤波器引入的时间延迟(相位偏移),使滤波后的波形与原始波形在时间轴上完美对齐,便于对比分析。 - 异常处理:内置
try-catch 机制,当用户输入的截止频率不符合奈奎斯特采样定律(如截止频率大于采样频率的一半)时,系统会弹出 uialert 错误提示,防止程序崩溃。
#### 6. 文件 I/O 实现
- 导入:支持读取 MAT 文件中的第一个变量或 CSV 文件的末列数据。通过
readmatrix 和动态字段引用实现。 - 导出:将处理后的
app.Data.filtered 向量进行转置并利用 writematrix 写入文件,确保数据格式符合标准的列式存储规范。
---
系统要求
- 环境版本:MATLAB R2020b 或更高版本。
- 工具箱依赖:
- Signal Processing Toolbox(信号处理工具箱)。
- Statistics and Machine Learning Toolbox(统计与机器学习工具箱,用于偏度/峰度计算)。