109 lines
2.7 KiB
Markdown
109 lines
2.7 KiB
Markdown
|
|
# 算法说明文档
|
||
|
|
|
||
|
|
## 1. ThresholdV1 阈值算法
|
||
|
|
|
||
|
|
上升曲线和下降曲线都使用同一类阈值判断算法:根据名义高电平 `Vhigh` 计算 90% 阈值和 10% 阈值,再在曲线中查找对应的时间点。
|
||
|
|
|
||
|
|
核心阈值:
|
||
|
|
|
||
|
|
```text
|
||
|
|
90% 阈值 = Vhigh * R90
|
||
|
|
10% 阈值 = Vhigh * Rstart
|
||
|
|
```
|
||
|
|
|
||
|
|
在参数模板中:
|
||
|
|
|
||
|
|
```text
|
||
|
|
90% 阈值 = 3.0 * 0.9 = 2.7 V
|
||
|
|
10% 阈值 = 3.0 * 0.1 = 0.3 V
|
||
|
|
```
|
||
|
|
|
||
|
|
曲线图中显示的两条水平虚线分别对应 90% 阈值线和 10% 阈值线。
|
||
|
|
|
||
|
|
## 2. 曲线内标记时间线
|
||
|
|
|
||
|
|
### 开启曲线:开启 - 上升
|
||
|
|
|
||
|
|
开启曲线用于分析信号从低电平上升到高电平的过程。
|
||
|
|
|
||
|
|
```text
|
||
|
|
低电平 -> 开启起点 T0 -> 上升 -> T90 -> 高电平
|
||
|
|
```
|
||
|
|
|
||
|
|
判断逻辑:
|
||
|
|
|
||
|
|
1. 查找信号第一次达到 10% 阈值的位置,作为开启起点 `T0`。
|
||
|
|
2. 从 `T0` 之后继续查找信号第一次达到 90% 阈值的位置,作为 `T90`。
|
||
|
|
3. 计算开启上升时间:
|
||
|
|
|
||
|
|
```text
|
||
|
|
RiseTime = T90 - T0
|
||
|
|
```
|
||
|
|
|
||
|
|
| 标记 | 含义 |
|
||
|
|
| --- | --- |
|
||
|
|
| `T0` | 开启起点,信号达到 10% 阈值 |
|
||
|
|
| `T90` | 信号达到 90% 阈值 |
|
||
|
|
| `RiseTime` | 开启上升时间 |
|
||
|
|
|
||
|
|
### 关断曲线:关断 - 下降
|
||
|
|
|
||
|
|
关断曲线用于分析信号从高电平下降到低电平的过程。
|
||
|
|
|
||
|
|
```text
|
||
|
|
高电平 -> 关断起点 Toff -> 下降 -> T10 -> 低电平
|
||
|
|
```
|
||
|
|
|
||
|
|
判断逻辑:
|
||
|
|
|
||
|
|
1. 确认曲线中存在高电平区域。
|
||
|
|
2. 查找信号下降到 90% 阈值的位置,作为关断起点 `Toff`。
|
||
|
|
3. 从 `Toff` 之后继续查找信号下降到 10% 阈值的位置,作为 `T10`。
|
||
|
|
4. 计算关断下降时间:
|
||
|
|
|
||
|
|
```text
|
||
|
|
FallTime = T10 - Toff
|
||
|
|
```
|
||
|
|
|
||
|
|
| 标记 | 含义 |
|
||
|
|
| --- | --- |
|
||
|
|
| `Toff` | 关断起点,信号下降到 90% 阈值 |
|
||
|
|
| `T10` | 信号下降到 10% 阈值 |
|
||
|
|
| `FallTime` | 关断下降时间 |
|
||
|
|
|
||
|
|
## 3. 参数模板
|
||
|
|
|
||
|
|
参数固定在代码变量中,模板如下:
|
||
|
|
|
||
|
|
```text
|
||
|
|
Vhigh: 3.0
|
||
|
|
R90: 0.9
|
||
|
|
Rstart: 0.1
|
||
|
|
StableN: 1
|
||
|
|
Win: 5
|
||
|
|
Sigma: 300
|
||
|
|
MedianFilterCheckBox: 5
|
||
|
|
```
|
||
|
|
|
||
|
|
### 参数含义
|
||
|
|
|
||
|
|
| 参数 | 模板值 | 含义 |
|
||
|
|
| --- | --- | --- |
|
||
|
|
| `Vhigh` | `3.0` | 名义高电平电压 |
|
||
|
|
| `R90` | `0.9` | 90% 阈值比例 |
|
||
|
|
| `Rstart` | `0.1` | 10% 阈值比例 |
|
||
|
|
| `StableN` | `1` | 连续满足阈值的采样点数量 |
|
||
|
|
| `Win` | `5` | 搜索/判断窗口点数 |
|
||
|
|
| `Sigma` | `300` | 算法阈值或窗口相关参数,按代码变量固定 |
|
||
|
|
| `MedianFilterCheckBox` | `5` | 中值滤波窗口点数 |
|
||
|
|
|
||
|
|
## 4. 输出字段
|
||
|
|
|
||
|
|
| 字段 | 开启曲线含义 | 关断曲线含义 |
|
||
|
|
| --- | --- | --- |
|
||
|
|
| `StartIndex` | `T0` 对应采样点索引 | `Toff` 对应采样点索引 |
|
||
|
|
| `EndIndex` | `T90` 对应采样点索引 | `T10` 对应采样点索引 |
|
||
|
|
| `T0` | 开启起点时间 | 关断起点时间 |
|
||
|
|
| `T90` | 上升到 90% 的时间 | 下降到 10% 的时间 |
|
||
|
|
| `RiseTime` | `T90 - T0` | `T10 - Toff` |
|