ecg心电信号生成stft图像异常,如何解决?

我尝试使用短时傅里叶变换处理ecg心电信号,但是生成的图像是双层图像。感觉很奇怪。按照我的理解应该只有一层特征才对,不知道为啥。数据只是一列数据的txt而已

img


这段大概是0:3600的生成结果

img

这个是1s的生成图像
用的

win_sz = 72
overlap = 36
outer_win_sz = 180
outer_overlap = 90
f,t,zxx = signal.stft(s[start : end]-zero,fs, window=outer_win, nperseg=outer_win_sz, noverlap=outer_overlap, nfft=outer_win_sz, return_onesided=True, boundary='zeros', padded=True, axis=- 1)

感觉我参数选的也不是很好

【以下回答由 GPT 生成】

首先,我注意到你使用了两个傅里叶变换的窗口,一个用于外部窗口(outer window),另一个用于内部窗口(window)。在这种情况下,内部窗口是你用于计算当前时刻频谱的窗口,而外部窗口是你用于滑动和覆盖整个信号的窗口。

但是,根据你提供的代码段,我无法确定你是如何使用win_szoverlap这两个变量的。由于你只展示了短时傅里叶变换(STFT)的计算步骤,我无法确定你在后续步骤中如何使用STFT结果来生成图像。

另外,你还提到图像具有双层特征,但你的描述并没有提供足够的信息来了解这个问题的具体表现和预期结果。

在回答你的问题之前,我需要进一步的信息,特别是:

  1. 你希望生成什么样的图像?
  2. 你对"双层特征"的具体含义是什么?是否可以提供一些示例图像和对应的预期结果?
  3. 你如何使用从STFT获得的结果生成图像?是否可以提供相关代码?

请提供更多的细节和代码,以便我能够更好地帮助你解决问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^