xtos_ signal_ p300_ quality_ gate
校验 P300 trial 字段并汇总检出率、平均 z、潜伏期标准差和 passed。
本页目录
声明
#include <xtos/signal.h>
int xtos_signal_p300_quality_gate(const struct xtos_p300_feature *trials,
size_t trial_count,
size_t min_valid_trials,
double min_detection_rate,
double min_mean_z_score,
double max_latency_stddev_ms,
struct xtos_p300_quality *result);参数
| 参数 | 类型 | 说明 |
|---|---|---|
| trials | const struct xtos_p300_feature * | 非 NULL trial 数组,至少 trial_count 项。 |
| trial_count | size_t | trial 数,必须大于 0。 |
| min_valid_trials | size_t | 通过所需的最少有效 trial 数,必须大于 0。 |
| min_detection_rate | double | 有限阈值,范围 [0,1]。 |
| min_mean_z_score | double | 有限的平均 z 分数下限,可为负数。 |
| max_latency_stddev_ms | double | 有限且非负的潜伏期标准差上限,单位毫秒。 |
| result | struct xtos_p300_quality * | 非 NULL 输出结构,由调用方提供。 |
输出字段
| 字段 | 类型 | 含义 |
|---|---|---|
| trials_total | size_t | 表示输入 trial 的总数量。 |
| trials_valid | size_t | 表示通过字段一致性检查的 trial 数量。 |
| trials_detected | size_t | 表示有效 trial 中 detected 为 1 的数量。 |
| trials_rejected | size_t | 表示未通过有效性检查的 trial 数量。 |
| detection_rate | double | 表示 trials_detected / trials_valid;没有有效 trial 时为 0。 |
| mean_peak_z_score | double | 表示有效 trial 的 peak_z_score 平均值。 |
| mean_peak_latency_ms | double | 表示有效 trial 的峰值潜伏期平均值,单位毫秒。 |
| peak_latency_stddev_ms | double | 表示有效 trial 潜伏期的总体标准差,单位毫秒。 |
| passed | int | 表示所有 gate 条件是否通过;通过为 1,否则为 0。 |
返回值
参数有效且统计完成时返回 0;即使 passed=0 也返回 0。参数错误返回 -1。
错误
| errno | 条件 |
|---|---|
| EINVAL | trials 或 result 为 NULL,计数为 0,min_detection_rate 不在 [0,1],任一阈值非有限,或 max_latency_stddev_ms 小于 0。 |
注意事项
- 每个 trial 会检查有限性、stddev、z 与 amplitude/stddev 一致性、能量下界和 detected=0/1;被拒 trial 会使 passed=0。
- 统计使用有效 trial 的总体潜伏期标准差;没有有效 trial 时统计完成并返回 0,但 passed 保持 0。
- 函数不分配内存,不修改 trials;result 由调用方拥有。
示例
源码
本文按 OpenXTOS 提交 dd313955ad57542bcd2af8827157d1bbd0cf5e83 的头文件和实现编写。