为什么我的傅立叶变换无法正常工作?

问题描述

因此,我尝试绘制EEG信号的傅立叶变换,通常使用完整信号,该信号以以下形状的numpy数组形式出现:例如,样本,通道 (16),这很容易,情节看起来很棒。但是后来我开始工作,没有完整的信号,而是类,它是碎片状的信号,也是这种形状的numpy数组:例如 samples,channels,observations ,例如[500、16、40 ]。

我的老师告诉我,最好的办法是对每个观察值(500x16x0、500x16x1,...,500x16x39)进行傅立叶变换,并促进所有观察值的变换。

这是我为获取转换而编写的python函数,它尝试将信号作为类(class1和class2串联)进行管理,如果失败,则意味着给定的信号是完整的信号,问题是当我绘制变换,使用类时的 y 轴数要比使用完整信号时的高得多。

知道为什么会这样吗? 顺便说一句,无论是完整的信号还是类别,采样频率都明显相同。

def analysis(signal_to_transform):
    sign = signal_to_transform #Given signal
    try:
        observartions = len(sign[0,:]) # Pieces (Observations)
        n = len(sign[:,0]) #Size of the signal
    except IndexError:
        observartions = 1 # 1 because it's the complete signal which isn't cut in pieces
        n = len(sign[:,0]) #Size of the signal
    freqs = sampling_frequency*fftfreq(n)
    mask = freqs>0
    for i in range(0,number_of_channels):
      fft_Y = 0
      for j in range(0,observartions):
        y = None
        try:
          y = sign[:,i,j]
        except IndexError:
          y = sign[:,i]
        fft_y = 2*np.abs((fft(y)/n))
        fft_Y = fft_Y + fft_y
      fft_Y = fft_Y/observartions
      plt.figure(1)
      plt.title('Fourier transform')
      plt.plot(freqs[mask],fft_Y[mask],label='fourier')
    plt.show()

完整信号的傅立叶变换:(69440,16)

Fourier transform of complete signal

中介类的傅立叶变换形状:(1375,16,40)

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...