虚拟信号发生器仿真系统 - 项目说明文档
项目介绍
本项目是一个基于 MATLAB 开发的集成化虚拟信号发生平台,专为科研实验、教学演示及工程调试设计。通过高度直观的图形用户界面(GUI),用户可以实时生成、处理并分析多种波形,实现信号的数学运算与动态可视化输出。系统集成了信号合成、参数配置、统计分析及频谱特征提取等功能,为用户研究信号特性提供了一个便捷的仿真环境。
功能特性
- 多类型信号源生成:支持正弦波、方波、三角波、锯齿波及高斯白噪声五种基础信号的生成。
- 双通道参数独立配置:用户可分别对信号 A 与信号 B 的幅度、频率、相位及波形类型进行精确调节。
- 复杂信号运算处理:支持四种运算模式,包括单一信号展示、信号叠加、幅度调制(AM)以及信号点乘运算。
- 实时噪声与偏移仿真:允许在合成信号中加入可控的直流偏移及指定方差的随机噪声。
- 多维动态可视化:通过三个独立的坐标系实时对比显示信号 A、信号 B 以及最终运算结果。
- 详尽的统计时频分析:自动计算信号的均值、方差、均方根(RMS)、峰峰值、采样点数及通过功率谱估计得出的主频成分。
实现逻辑与功能细节
程序的逻辑架构分为初始化界面、波形生成算法、信号处理逻辑及统计更新四个核心模块:
1. 界面设计逻辑
系统采用栅格布局管理(uigridlayout),将界面划分为三个功能区:
- 控制面板:位于左侧,包含下拉菜单(uidropdown)和数值编辑框(uieditfield),用于交互式输入。
- 绘图区域:位于右侧,由三个坐标轴(uiaxes)构成,分别负责分量信号与结果信号的瀑布流绘制。
- 统计面板:位于底部,采用只读文本域展示实时计算的信号指标。
2. 波形生成算法
系统在内部定义了波形合成逻辑,根据用户选择执行不同的数学计算:
- 正弦波:基于标准三角函数计算。
- 方波:利用 sign 函数对正弦信号进行符号提取。
- 三角波:通过反正弦与正弦函数组合实现平滑转折。
- 锯齿波:通过线性时间序列减去其向下取整值(floor),结合相位偏移算法实现周期性线性爬升。
- 白噪声:利用正态分布随机数生成器产生。
3. 信号运算与合成逻辑
信号处理模块接收两个基础信号,并执行以下逻辑:
- 叠加模式:将信号 A 与信号 B 在时域进行线性相加。
- 幅度调制(AM):将信号 B 作为调制波,信号 A 作为载波,执行 (1 + yB) .* yA 的运算。
- 乘法模式:对两个信号序列进行点对点的乘法运算。
- 后处理:在最终结果上累加直流分量,并叠加基于指定方差生成的随机噪声序列。
4. 统计指标计算
系统在每次生成波形时同步运行后台计算:
- 时域指标:计算常规统计量,其中均方根值通过自定义函数实现。
- 频域指标:内置了简易版功率谱估计逻辑,通过快速傅里叶变换(FFT)计算功率谱密度,寻找能量最强的频率点作为主频成分。
关键函数与算法分析
- 信号合成函数:采用条件分支结构,将波形选择与数学模型解耦,确保了生成波形的相位连续性。
- 自定义功率谱估计算法:为了脱离特定的工具箱限制,程序手动实现了 FFT 变换、双边谱转单边谱以及归一化处理。该算法通过计算 N 点实信号的模值平方,并提取 0 到 Fs/2 范围内的频谱,精确定位信号的能量中心。
- 动态刷新机制:通过回调函数触发数据流更新,每次点击按钮都会重新计算 0.5 秒时长内的所有样点,并强制刷新坐标轴轨迹。
使用方法
- 配置参数:在左侧控制面板中选择信号 A 和信号 B 的波形类型,输入所需的幅度、频率和相位。
- 设置环境:输入采样频率(Fs),并根据需要设定直流偏移或噪声强度。
- 选择运算:在“运算模式”下拉菜单中选择如何合并这两个信号。
- 生成结果:点击“生成并更新波形”按钮,系统将立即在右侧绘制三组波形,并在下方显示详细的统计参数报告。
系统要求
- MATLAB R2020a 或更高版本(需支持 App Designer 相关 UI 组件)。
- 无需额外安装信号处理工具箱(系统已内置兼容性核心算法)。