197 lines
4.7 KiB
Markdown
197 lines
4.7 KiB
Markdown
|
|
# PPG数据处理功能说明 (A50伤后6h-1.txt)
|
|||
|
|
|
|||
|
|
## 📋 功能概述
|
|||
|
|
|
|||
|
|
专门为处理 `A50伤后6h-1.txt` 文件而设计的PPG数据处理功能,可以读取txt格式的光电容积脉搏波数据,进行信号预处理和生理指标计算。
|
|||
|
|
|
|||
|
|
## 📁 数据文件说明
|
|||
|
|
|
|||
|
|
### 文件位置
|
|||
|
|
- **文件路径**: `raw_data/A50伤后6h-1.txt`
|
|||
|
|
- **文件大小**: 28KB
|
|||
|
|
- **数据行数**: 约3934行
|
|||
|
|
|
|||
|
|
### 数据格式
|
|||
|
|
- **文件类型**: 纯文本文件 (.txt)
|
|||
|
|
- **数据格式**: 每行两个数值,用逗号分隔
|
|||
|
|
- **第一列**: 红光光电容积数据
|
|||
|
|
- **第二列**: 红外光光电容积数据
|
|||
|
|
- **示例**:
|
|||
|
|
```
|
|||
|
|
-8,-10
|
|||
|
|
-10,-11
|
|||
|
|
-12,-10
|
|||
|
|
-17,-9
|
|||
|
|
-17,-9
|
|||
|
|
-21,-8
|
|||
|
|
-20,-7
|
|||
|
|
-20,-8
|
|||
|
|
-21,-6
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 数据特征
|
|||
|
|
- **数据长度**: 约3934个数据点
|
|||
|
|
- **数值范围**: 负值,表示光电容积变化
|
|||
|
|
- **采样率**: 默认设置为50Hz(可在代码中调整)
|
|||
|
|
- **数据类型**: 光电容积脉搏波 (PPG)
|
|||
|
|
|
|||
|
|
## 🚀 使用方法
|
|||
|
|
|
|||
|
|
### 1. 运行程序
|
|||
|
|
选择选项3: "处理PPG数据 (A50伤后6h-1.txt)"
|
|||
|
|
|
|||
|
|
### 2. 自动处理流程
|
|||
|
|
程序会自动执行以下步骤:
|
|||
|
|
1. 读取 `raw_data/A50伤后6h-1.txt` 文件
|
|||
|
|
2. 解析红光和红外光数据
|
|||
|
|
3. 执行信号预处理
|
|||
|
|
4. 计算生理指标
|
|||
|
|
5. 保存处理结果
|
|||
|
|
|
|||
|
|
### 3. 查看结果
|
|||
|
|
程序会自动生成以下文件:
|
|||
|
|
- `data_generated/ppg_a50_processed.csv` - 预处理后的PPG数据
|
|||
|
|
- `data_generated/ppg_a50_metrics.csv` - 计算的生理指标
|
|||
|
|
|
|||
|
|
## 🔧 处理流程详解
|
|||
|
|
|
|||
|
|
### 步骤1: 数据读取
|
|||
|
|
- 打开 `raw_data/A50伤后6h-1.txt` 文件
|
|||
|
|
- 逐行读取数据
|
|||
|
|
- 解析逗号分隔的数值
|
|||
|
|
|
|||
|
|
### 步骤2: 数据解析
|
|||
|
|
- 分离红光和红外光数据
|
|||
|
|
- 数据验证和错误处理
|
|||
|
|
- 统计数据显示(范围、数量等)
|
|||
|
|
|
|||
|
|
### 步骤3: 数据转换
|
|||
|
|
- 创建SensorData对象
|
|||
|
|
- 设置数据类型为PPG
|
|||
|
|
- 转换为多通道格式
|
|||
|
|
|
|||
|
|
### 步骤4: 信号预处理
|
|||
|
|
- 应用PPG专用滤波器
|
|||
|
|
- 去除运动伪影
|
|||
|
|
- 信号质量评估
|
|||
|
|
|
|||
|
|
### 步骤5: 指标计算
|
|||
|
|
- 心率计算
|
|||
|
|
- 血氧饱和度 (SpO2)
|
|||
|
|
- 灌注指数 (PI)
|
|||
|
|
- 脉搏波宽度
|
|||
|
|
- 红光/红外光比值
|
|||
|
|
- 信号质量评分
|
|||
|
|
|
|||
|
|
### 步骤6: 结果保存
|
|||
|
|
- 保存预处理后的数据
|
|||
|
|
- 保存计算的生理指标
|
|||
|
|
- 生成详细报告
|
|||
|
|
|
|||
|
|
## 📊 输出指标说明
|
|||
|
|
|
|||
|
|
| 指标名称 | 单位 | 说明 |
|
|||
|
|
|----------|------|------|
|
|||
|
|
| **心率** | bpm | 每分钟心跳次数 |
|
|||
|
|
| **血氧饱和度** | % | 血液中氧气的饱和度 |
|
|||
|
|
| **灌注指数** | % | 组织灌注情况的指标 |
|
|||
|
|
| **脉搏波宽度** | ms | 脉搏波的持续时间 |
|
|||
|
|
| **红光红外光比值** | 无单位 | 红光与红外光信号的比值 |
|
|||
|
|
| **信号质量评分** | % | 信号质量的综合评分 |
|
|||
|
|
| **统计指标** | mV | 均值、标准差、最小值、最大值、峰峰值 |
|
|||
|
|
|
|||
|
|
## ⚙️ 参数配置
|
|||
|
|
|
|||
|
|
### 采样率设置
|
|||
|
|
```cpp
|
|||
|
|
const float sample_rate = 50.0f; // 可在代码中调整
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 信号质量阈值
|
|||
|
|
```cpp
|
|||
|
|
ppg_data.sqi = 0.8f; // 默认信号质量指数
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 文件路径配置
|
|||
|
|
```cpp
|
|||
|
|
std::string ppg_file_path = "raw_data/A50伤后6h-1.txt";
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## ⚠️ 注意事项
|
|||
|
|
|
|||
|
|
### 1. 文件格式要求
|
|||
|
|
- 确保数据文件格式正确(逗号分隔)
|
|||
|
|
- 每行必须包含两个数值
|
|||
|
|
- 避免空行或格式错误
|
|||
|
|
|
|||
|
|
### 2. 数据质量
|
|||
|
|
- 数据长度充足(3934个点)
|
|||
|
|
- 信号质量评估
|
|||
|
|
- 异常值检测和处理
|
|||
|
|
|
|||
|
|
### 3. 采样率设置
|
|||
|
|
- 采样率设置错误会影响心率计算
|
|||
|
|
- 请根据实际设备参数调整
|
|||
|
|
- 常见采样率: 25Hz, 50Hz, 100Hz
|
|||
|
|
|
|||
|
|
## 🔍 故障排除
|
|||
|
|
|
|||
|
|
### 常见问题
|
|||
|
|
|
|||
|
|
#### 1. 文件读取失败
|
|||
|
|
```
|
|||
|
|
错误: 无法打开PPG数据文件: raw_data/A50伤后6h-1.txt
|
|||
|
|
```
|
|||
|
|
**解决方案**: 检查文件是否存在于 `raw_data/` 文件夹中
|
|||
|
|
|
|||
|
|
#### 2. 数据解析失败
|
|||
|
|
```
|
|||
|
|
警告: 第 X 行数据解析失败: -8,-10
|
|||
|
|
```
|
|||
|
|
**解决方案**: 检查数据格式是否正确,确保每行都是两个数值
|
|||
|
|
|
|||
|
|
#### 3. 指标计算异常
|
|||
|
|
```
|
|||
|
|
警告: 计算的心率超出正常范围: XXX bpm
|
|||
|
|
```
|
|||
|
|
**解决方案**: 检查采样率设置和数据质量
|
|||
|
|
|
|||
|
|
## 📈 性能优化建议
|
|||
|
|
|
|||
|
|
1. **数据预处理**: 对原始数据进行去噪和滤波
|
|||
|
|
2. **采样率优化**: 根据应用需求选择合适的采样率
|
|||
|
|
3. **算法参数**: 根据数据特征调整算法参数
|
|||
|
|
4. **内存管理**: 对于大数据文件,考虑分批处理
|
|||
|
|
|
|||
|
|
## 🚀 扩展功能
|
|||
|
|
|
|||
|
|
### 未来可添加的功能
|
|||
|
|
- 实时PPG数据处理
|
|||
|
|
- 多文件批量处理
|
|||
|
|
- 自定义滤波器参数
|
|||
|
|
- 数据可视化图表
|
|||
|
|
- 异常检测和报警
|
|||
|
|
|
|||
|
|
## 📝 更新日志
|
|||
|
|
|
|||
|
|
- **2025年1月**: 新增PPG数据处理功能
|
|||
|
|
- 专门针对A50伤后6h-1.txt文件
|
|||
|
|
- 支持txt格式数据读取
|
|||
|
|
- 完整的信号预处理流程
|
|||
|
|
- 全面的生理指标计算
|
|||
|
|
|
|||
|
|
## 🔬 医学应用
|
|||
|
|
|
|||
|
|
### 临床意义
|
|||
|
|
- **心率监测**: 评估心血管功能
|
|||
|
|
- **血氧饱和度**: 监测组织氧合状态
|
|||
|
|
- **灌注指数**: 评估组织血流灌注
|
|||
|
|
- **信号质量**: 确保测量可靠性
|
|||
|
|
|
|||
|
|
### 适用场景
|
|||
|
|
- 重症监护
|
|||
|
|
- 手术监测
|
|||
|
|
- 康复评估
|
|||
|
|
- 健康监测
|
|||
|
|
|