1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
| import numpy as np
class AviationMultiModalAnalysis: """ 航空多模态信号分析框架 参考: Frontiers in Neuroergonomics 2026 核心: 评估各信号在真实飞行中的构念相关性 """ def __init__(self): self.construct_relevance = { 'eeg_alpha': {'cognitive_load': 0.75, 'artifact_risk': 0.45}, 'eeg_beta': {'cognitive_load': 0.80, 'artifact_risk': 0.50}, 'hrv_rmssd': {'stress_load': 0.70, 'artifact_risk': 0.15}, 'eda_scl': {'arousal': 0.65, 'artifact_risk': 0.30}, 'gaze_entropy': {'attention': 0.85, 'artifact_risk': 0.25}, 'fixation_duration': {'attention': 0.80, 'artifact_risk': 0.20}, 'skin_temp': {'autonomic': 0.45, 'artifact_risk': 0.10}, 'flight_dynamics': {'task_load': 0.90, 'artifact_risk': 0.05}, } def evaluate_signal_quality(self, signal_name: str) -> dict: """评估信号在飞行环境中的质量""" if signal_name not in self.construct_relevance: return {'quality': 'unknown'} info = self.construct_relevance[signal_name] snr = info.get('cognitive_load', info.get('stress_load', info.get('arousal', info.get('attention', info.get('autonomic', info.get('task_load', 0.5)))))) / \ max(info['artifact_risk'], 0.05) if snr > 3.0: quality = 'excellent' elif snr > 2.0: quality = 'good' elif snr > 1.0: quality = 'marginal' else: quality = 'poor' return { 'quality': quality, 'snr': snr, 'construct_relevance': {k: v for k, v in info.items() if k != 'artifact_risk'}, 'artifact_risk': info['artifact_risk'], } def recommend_automotive_transfer(self) -> list: """推荐可迁移到汽车座舱的信号""" recommendations = [] for signal, info in self.construct_relevance.items(): auto_artifact = info['artifact_risk'] * 0.5 for construct, relevance in info.items(): if construct == 'artifact_risk': continue if relevance > 0.6 and auto_artifact < 0.25: recommendations.append({ 'signal': signal, 'construct': construct, 'aviation_relevance': relevance, 'auto_relevance': relevance * 1.1, 'auto_artifact': auto_artifact, 'transferable': True, }) recommendations.sort(key=lambda x: x['auto_relevance'], reverse=True) return recommendations
if __name__ == "__main__": analysis = AviationMultiModalAnalysis() print("=== 航空多模态信号质量评估 ===\n") for signal in analysis.construct_relevance: result = analysis.evaluate_signal_quality(signal) print(f"{signal}: {result['quality']} (SNR={result['snr']:.2f})") print("\n=== 可迁移到汽车座舱的信号 ===\n") transferable = analysis.recommend_automotive_transfer() for t in transferable: print(f"{t['signal']} → {t['construct']}: " f"航空={t['aviation_relevance']:.2f}, " f"汽车={t['auto_relevance']:.2f}, " f"伪影={t['auto_artifact']:.2f}")
|