medical_SDK/CHANNEL_MAPPING_UPDATE.md

187 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 通道映射函数逻辑更新说明
## 📊 更新概述
根据您提供的12导联ECG电极放置图片和详细描述我已经更新了 `ECG_12LEAD_Data_Mapper` 函数的通道映射逻辑实现了完整的12导联ECG通道映射。
## 🔧 修改前的错误逻辑
**原有代码的问题:**
- 错误地假设原始数据通道0、1、2分别对应RA、LA、LL电极
- 直接在输出通道0、1、2上计算Lead I、II、III
- 没有正确理解硬件连接和导联计算的关系
- 加压肢体导联计算方式不正确
## ✅ 修改后的正确逻辑
### 1. 通道映射关系
根据您的详细描述:
| 原始数据通道 | 映射后通道 | 导联类型 | 计算公式 | 说明 |
|-------------|------------|----------|----------|------|
| 通道0 | 通道0 | V1 | 直接复制 | V1电极信号 |
| 通道2 | 通道1 | Lead I | 直接复制 | LA-RA (左臂-右臂) |
| 通道3 | 通道2 | Lead II | 直接复制 | LL-RA (左腿-右臂) |
| - | 通道3 | Lead III | 通道2-通道1 | LL-LA (左腿-左臂) |
| 通道4 | 通道4 | V2 | 直接复制 | V2胸导联 |
| 通道5 | 通道5 | V3 | 直接复制 | V3胸导联 |
| 通道6 | 通道6 | V4 | 直接复制 | V4胸导联 |
| 通道7 | 通道7 | V5 | 直接复制 | V5胸导联 |
| 通道8 | 通道8 | V6 | 直接复制 | V6胸导联 |
### 2. 导联计算原理
**标准肢体导联:**
- **Lead I** = LA - RA (左臂电位 - 右臂电位)
- **Lead II** = LL - RA (左腿电位 - 右臂电位)
- **Lead III** = LL - LA (左腿电位 - 左臂电位)
**数学关系验证:**
```
Lead III = LL - LA
= (LL - RA) - (LA - RA)
= Lead II - Lead I
```
**加压肢体导联:**
- **aVR** = 3/2 × (RA - Vw) = -1/2 × (Lead I + Lead II) [简化计算]
- **aVL** = 3/2 × (LA - Vw)
- **aVF** = 3/2 × (LL - Vw)
**Wilson中心端子**
- **Vw** = 1/3 × (RA + LA + LL)
### 3. 代码实现细节
```cpp
// 通道0: V1电极信号 (直接复制)
output_channels[0] = input_channels[0];
// 通道1: Lead I = LA - RA (直接复制)
output_channels[1] = input_channels[2];
// 通道2: Lead II = LL - RA (直接复制)
output_channels[2] = input_channels[3];
// 通道3: Lead III = LL - LA = Lead II - Lead I
for (size_t sample = 0; sample < num_samples; ++sample) {
output_channels[3][sample] = output_channels[2][sample] - output_channels[1][sample];
}
// 胸导联 V2-V6 (直接复制)
output_channels[4] = input_channels[4]; // V2
output_channels[5] = input_channels[5]; // V3
output_channels[6] = input_channels[6]; // V4
output_channels[7] = input_channels[7]; // V5
output_channels[8] = input_channels[8]; // V6
// 加压肢体导联计算
for (size_t sample = 0; sample < num_samples; ++sample) {
float lead_I = output_channels[1][sample]; // Lead I = LA - RA
float lead_II = output_channels[2][sample]; // Lead II = LL - RA
// 简化计算aVR
output_channels[9][sample] = -0.5f * (lead_I + lead_II); // aVR
// 设RA为参考点(0)计算LA和LL相对于RA的电位
float LA = lead_I; // LA = Lead I (因为RA=0)
float LL = lead_II; // LL = Lead II (因为RA=0)
float RA = 0.0f; // RA作为参考点设为0
// 计算Wilson中心端子
float Vw = (RA + LA + LL) / 3.0f;
// 计算aVL和aVF
output_channels[10][sample] = 1.5f * (LA - Vw); // aVL
output_channels[11][sample] = 1.5f * (LL - Vw); // aVF
}
```
## 🎯 硬件连接分析
根据您提供的电路图ADS1298IPAGR的输入通道连接
- **ADC Channel 1**: V1 - LA (测量V1相对于LA的电位)
- **ADC Channel 2**: RA - LL (测量RA相对于LL的电位)
- **ADC Channel 3**: V2 - V3 (测量V2相对于V3的电位)
- **ADC Channel 4**: V4 - V5 (测量V4相对于V5的电位)
- **ADC Channel 5**: V6 - V6 (单端测量V6)
- **ADC Channel 6**: V5 - V4 (测量V5相对于V4的电位)
- **ADC Channel 7**: V3 - V2 (测量V3相对于V2的电位)
- **ADC Channel 8**: LL - RA (测量LL相对于RA的电位)
## 📋 输出通道结构
修改后的12导联输出结构
| 输出通道 | 导联类型 | 数据来源 | 状态 |
|----------|----------|----------|------|
| 通道0 | V1 | 原始通道0 | ✅ 已实现 |
| 通道1 | Lead I | 原始通道2 | ✅ 已实现 |
| 通道2 | Lead II | 原始通道3 | ✅ 已实现 |
| 通道3 | Lead III | 计算得出 | ✅ 已实现 |
| 通道4 | V2 | 原始通道4 | ✅ 已实现 |
| 通道5 | V3 | 原始通道5 | ✅ 已实现 |
| 通道6 | V4 | 原始通道6 | ✅ 已实现 |
| 通道7 | V5 | 原始通道7 | ✅ 已实现 |
| 通道8 | V6 | 原始通道8 | ✅ 已实现 |
| 通道9 | aVR | 计算得出 | ✅ 已实现 |
| 通道10 | aVL | 计算得出 | ✅ 已实现 |
| 通道11 | aVF | 计算得出 | ✅ 已实现 |
## 🔍 关键优化点
### 1. aVR的简化计算
根据数学推导aVR可以简化为
```
aVR = 3/2 × (RA - Vw)
= 3/2 × (RA - (RA + LA + LL)/3)
= 3/2 × (2RA - LA - LL)/3
= (2RA - LA - LL)/2
= -1/2 × (LA - RA + LL - RA)
= -1/2 × (Lead I + Lead II)
```
### 2. 参考点设置
为了简化计算将RA设置为参考点(0)
- LA = Lead I (因为RA=0)
- LL = Lead II (因为RA=0)
- RA = 0
### 3. 数据要求
- 输入数据至少需要9个通道
- 所有通道必须具有相同的采样点数
- 确保输入通道数据不为空
## 🚀 使用方法
更新后的通道映射函数会自动:
1. 验证输入数据的完整性至少9个通道
2. 执行正确的导联计算
3. 生成完整的12导联ECG数据
4. 提供详细的错误信息
## 📝 注意事项
1. **数据要求**: 输入数据至少需要9个通道
2. **采样率**: 所有通道必须具有相同的采样点数
3. **数据质量**: 确保输入通道数据不为空
4. **计算精度**: 使用浮点数进行导联计算,保持精度
5. **参考点**: RA作为参考点设为0简化计算
## 🔄 后续优化建议
1. **添加导联质量评估**
2. **支持不同的电极配置方案**
3. **添加实时导联计算优化**
4. **实现动态Wilson中心端子计算**
## 📞 技术支持
如果您需要进一步调整通道映射逻辑或有其他问题,请提供:
1. 完整的硬件连接图
2. 特定的导联计算需求
3. 性能优化要求