【问题标题】:PERFORMING FFT on EEG SIGNAL USING MATLAB使用 MATLAB 对 EEG 信号执行 FFT
【发布时间】:2014-04-19 07:41:06
【问题描述】:

我从 NEXUS 10 mark 2 设备获得了一个 5 分钟的原始脑电图,它在 matlab 中输出为 1 x 76800 行向量。据我了解,选择的采样频率是 256 赫兹,因此它给了我总共 76800 个采样点。没有我在这个原始脑电图信号上执行 N 点 FFT。因为 N 只能是 2 的幂,所以我从 RAW EGG 中提取 65536(2 ^ 16)个采样点,即从 76800 个点,我取了 65536 个。现在我无法在这个向量上执行 fft(65536 个采样点) 请任何人都可以指导..因为我是初学者.. 到目前为止我已经尝试过dis

       x=raw(1,1:65536); %raw eeg contain 76800 points , 65536 points are taken 
                         from this
       N=length(x);
       fs=256;
        ts=1/fs;
        tmax=(N-1)*ts;
        t=0:ts:tmax;
        plot(t,x);  % plot time domain

        f=-fs/2:fs/(N-1):fs/2;
        fftval=fft(x);                                                              
        plot(f,ffval); % plot freq domain

我不知道所遵循的步骤是否正确.....我无法从我经历过的stackoverflow中的许多帖子中理解..请帮助..我不想使用很多人给出的EEGLAB发帖请帮忙

【问题讨论】:

    标签: matlab fft dft


    【解决方案1】:

    我认为代码可能是这样的:

    load('eeg_4m.mat')
    fs=2048;
    x=val(1,:);
    N=length(x);
    ts=1/fs;
    tmax=(N-1)*ts;
    t=0:ts:tmax;
    plot(t,x);  % plot time domain
    
    nfft = 2^( nextpow2(length(x)) );
    df = fs/nfft;
    f = 0:df:fs/2;
    X = fft(x,nfft);
    X = X(1:nfft/2+1);
    figure; plot(f,abs(X)); axis([0,50,0,10e6]); % plot freq domain
    

    【讨论】:

      【解决方案2】:

      768000 是一个非常好的 FFT 大小。它分解小素数:2^11 * 3 * 5^3

      在我的笔记本电脑上,这大约需要 15 毫秒。

      FFT 只能是 2 的幂是一种常见的误解。混合基数 FFT 并非如此。

      【讨论】:

      • 感谢您先生的回复...实际上是 76800 而不是 768000..我主要关心的是我是否正在写东西...我已经将上面的代码更新为这个..但是不知道我是否遵循正确的步骤.. x=raw(1,1:65536); %raw eeg 包含 76800 个点,65536 个点取自这个 N=length(x); fs=256; ts=1/fs; tmax=(N-1)*ts; t=0:ts:tmax;情节(t,x); f=-fs/2:fs/(N-1):fs/2; fftval=fft(x);情节(f,fftval);
      猜你喜欢
      • 2020-02-28
      • 1970-01-01
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      • 2015-07-28
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多