通过给定Python代码处理后信号的格式化方式是怎样的?
代码对信号的格式化处理逻辑
整个处理流程围绕单通道脑电信号的语谱图生成做逐环节适配,具体格式化规则如下:
- 原始数据基础属性:输入的mat文件存储15通道的癫痫发作前期脑电信号,总时长600秒,采样率5000Hz,单通道共300万个采样点,和
5000Hz * 600s的计算结果完全匹配。 - 加载环节的裁剪:通过
scipy.io.loadmat读取mat文件后,代码未使用全部15通道数据,经多层结构体索引后仅提取第一个通道的信号;后续循环仅处理信号最开头的10000个采样点,按5000点的步长切分,最终得到2段长度为5000点的信号切片,每段刚好对应1秒时长,也就是原始信号开头连续2秒的内容。 - 时频域转换:对每段1秒的时域切片,调用
spectrogram函数计算双边语谱图(设置return_onesided=False不做单边谱截断),输出三类结果:频率轴坐标数组、时间轴坐标数组、二维原始功率谱矩阵,矩阵内每个值对应某一时刻、某一频率点的信号能量。 - 数值范围适配:首先对原始功率谱做
np.log1p()变换(即计算log(1 + 功率值)),压缩大能量值的动态范围,避免强弱能量差过大导致弱信号特征被掩盖;之后将变换后的矩阵除以自身全局最大值,把所有像素值压缩到0~1的区间,完全匹配灰度图的输入数值要求。 - 最终可视化渲染:用灰度色阶映射归一化后的矩阵值,像素越亮代表对应时频点的信号能量越高,越暗代表能量越低,最终输出灰度格式的语谱图。
内容的提问来源于stack exchange,提问作者Palmen
相关产品推荐
相关产品推荐

