1. 项目概述与背景
作为一名长期从事脑电信号处理开发的工程师,我经常需要测试和演示EEG信号处理算法的效果。最近在开发一个基于PyQt5的EEG信号可视化工具时,遇到了一个典型问题:在没有真实硬件设备的情况下,如何快速验证滤波算法的效果?这就是本文要分享的"虚拟数据模式"解决方案。
这个方案的核心价值在于:
- 无需依赖硬件设备即可测试EEG处理流程
- 可以直观对比滤波前后的信号差异
- 方便调整参数观察不同条件下的处理效果
- 为算法开发提供可控的测试环境
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 虚拟数据模式的设计思路
2.1 需求分析
在EEG信号处理中,我们通常需要:
- 实时显示多通道脑电信号
- 应用数字滤波器去除干扰(特别是50Hz工频干扰)
- 能够灵活调整信号参数进行测试
传统方法需要连接真实EEG设备,但这存在几个问题:
- 硬件设备可能不可用
- 真实信号不可控,难以复现特定测试场景
- 调试过程不够直观
2.2 解决方案设计
基于以上需求,我设计了虚拟数据模式,主要特点包括:
- 使用带噪声的正弦波模拟EEG信号
- 可编程控制信号参数(频率、幅度、噪声等)
- 保留原有硬件接口,可随时切换回真实设备模式
3. 代码实现详解
3.1 SerialThread类的改造
首先对原有的串口线程类进行改造,添加虚拟数据生成功能:
python复制class SerialThread(QtCore.QThread):
data_received = QtCore.pyqtSignal(str)
def __init__(self, com_port: str, log_queue: queue.Queue, virtual_mode=False):
super().__init__()
self.com_port = com_port
self.log_queue = log_queue
self.virtual_mode = virtual_mode # 虚拟模式标志
# 虚拟数据参数
self.virtual_t = 0 # 时间计数器
self.
