项目说明文档:基于MATLAB的数字信号处理集成仿真系统
项目介绍
本项目是一个基于 MATLAB 开发的交互式数字信号处理(DSP)仿真平台。系统通过图形化用户界面(GUI),为用户提供了一个集信号生成、时频分析、滤波器设计与实时处理效果验证于一体的集成环境。该系统旨在简化信号处理算法的验证流程,通过可视化的方式展示信号在不同处理环节下的动态演变,不仅适用于学术教学,也适用于基础算法的研究。
功能特性
- 多源信号合成:支持生成正弦波、方波、三角波三种基础周期信号,允许用户自定义频率、振幅和采样率,并支持导入外部 WAV 或 MP3 格式的语音文件。
- 随机噪声干扰模拟:提供可调节强度的加性高斯白噪声处理,能够模拟真实物理环境中的信号失真与混合。
- 双域变换分析:集成离散傅里叶变换(DFT/FFT)与离散余弦变换(DCT),支持从频域角度观察信号的能量分布。
- 交互式滤波器设计:涵盖有限冲激响应(FIR)与无限冲激响应(IIR)两种主流设计方案,支持低通、高通、带通三种滤波模式。
- 多维度可视化展示:系统同步提供原始/混合信号时域图、幅度频谱图、执行处理后的波形图以及滤波器的幅频特性响应曲线。
系统要求
- 运行环境:MATLAB R2020b 或更高版本。
- 必备工具箱:Signal Processing Toolbox(信号处理工具箱)。
- 硬件建议:支持图形渲染的显示器(建议分辨率1280x800以上)。
使用指南
- 启动系统:在 MATLAB 命令行窗口运行主程序,弹出 GUI 界面。
- 信号初始化:在“参数配置”面板设置基波频率、振幅及采样率,选择信号类型或导入语音,调整“噪声强度”滑块。
- 生成信号:点击“生成/导入信号”按钮,系统会在上方两个绘图区分别显示时域混合波形和初始频谱。
- 执行变换:在“变换分析”面板选择 DFT 或 DCT 模式,点击执行,在右下角查看分析结果。
- 设计并应用滤波器:
* 在底部面板选择滤波类型(如低通)。
* 输入截止频率(若为带通则需设置两个频率点)。
* 选择设计方法(如 FIR 汉明窗或 IIR 巴特沃斯)。
* 点击“应用滤波器”,系统将实时展示滤波后的时域波形及其幅频响应,并在原始频谱图中以对比色叠加显示滤波后的结果。
核心实现逻辑
系统基于 MATLAB 的 uifigure 框架构建,采用结构化的数据管理和事件驱动逻辑:
1. 数据交互逻辑
系统定义了一个全局状态结构体 appData,用于实时存储和传递采样率 (Fs)、时间向量 (t)、原始信号、含噪信号以及处理后的信号。这种设计确保了不同模块(信号生成、变换、滤波)可以共享同一时钟基准和采样序列。
2. 信号生成与预处理
- 周期信号利用
sin、square 和 sawtooth 函数生成。 - 语音信号通过
audioread 接口获取,并自动同步当前系统的采样率设定。 - 噪声合成采用
randn 函数产生的正态分布随机数,并通过滑动条数值控制其增益,实现信号与噪声的线性叠加。
3. 变换分析算法
- DFT 实现:使用了高效的快速傅里叶变换 (FFT) 算法。为了获得单边谱,程序对 FFT 结果进行了取模、归一化(除以信号长度 L)以及幅值补偿(对非直流/奈奎斯特频率分量乘以 2)处理。
- DCT 实现:直接调用离散余弦变换函数,用于分析信号在样本空间内的能量压缩特性,结果以序列系数形式呈现。
4. 滤波器设计逻辑
- FIR 滤波器:采用窗函数法。通过
fir1 函数结合 rectwin(矩形窗)或 hamming(汉明窗)生成滤波器系数 b。 - IIR 滤波器:采用巴特沃斯原型滤波。利用
butter 函数根据用户设定的频率指标计算分式传递函数的分子系数 b 和分母系数 a。 - 频率归一化:在设计前,系统自动将用户输入的 Hz 频率转换为相对于奈奎斯特频率的归一化频率(0.0 到 1.0 之间),并设有边界检查以防止计算溢出。
算法细节分析
- 频谱分析的准确性:在绘制频谱时,系统根据当前的采样率动态计算频率轴刻度
freqs = Fs * (0:(L/2)) / L,确保了频点位置与实际物理含义的一致性。 - 滤波器阶数控制:FIR 滤波器固定为 50 阶以平衡处理精度和计算延迟;IIR 滤波器固定为 6 阶,确保在保持陡峭过渡带的同时不引起系统不稳定。
- 时域可视化:为了便于观察高频信号的细节,时域绘图区默认显示信号的前 0.1 秒,防止长信号导致的绘图堆积。
- 叠加对比功能:在应用滤波器后,系统使用
hold on 指令在原频谱图上以红色线条绘制处理后的频谱,这种视觉叠加方便用户直观判断滤波器的截止特性是否符合预期。