XTOS / OPEN SOURCE REAL-TIME SYSTEMOPEN SOURCE · VERSION 0.9.0 · BUILD FROM SOURCE
libxtos-signalxtos_signal_p300_quality_gate

xtos_signal_p300_quality_gate

校验 P300 trial 字段并汇总检出率、平均 z、潜伏期标准差和 passed。

本页目录

声明

c
#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);

参数

参数类型说明
trialsconst struct xtos_p300_feature *非 NULL trial 数组,至少 trial_count 项。
trial_countsize_ttrial 数,必须大于 0。
min_valid_trialssize_t通过所需的最少有效 trial 数,必须大于 0。
min_detection_ratedouble有限阈值,范围 [0,1]。
min_mean_z_scoredouble有限的平均 z 分数下限,可为负数。
max_latency_stddev_msdouble有限且非负的潜伏期标准差上限,单位毫秒。
resultstruct xtos_p300_quality *非 NULL 输出结构,由调用方提供。

输出字段

字段类型含义
trials_totalsize_t表示输入 trial 的总数量。
trials_validsize_t表示通过字段一致性检查的 trial 数量。
trials_detectedsize_t表示有效 trial 中 detected 为 1 的数量。
trials_rejectedsize_t表示未通过有效性检查的 trial 数量。
detection_ratedouble表示 trials_detected / trials_valid;没有有效 trial 时为 0。
mean_peak_z_scoredouble表示有效 trial 的 peak_z_score 平均值。
mean_peak_latency_msdouble表示有效 trial 的峰值潜伏期平均值,单位毫秒。
peak_latency_stddev_msdouble表示有效 trial 潜伏期的总体标准差,单位毫秒。
passedint表示所有 gate 条件是否通过;通过为 1,否则为 0。

返回值

参数有效且统计完成时返回 0;即使 passed=0 也返回 0。参数错误返回 -1。

错误

errno条件
EINVALtrials 或 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 的头文件和实现编写。