首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用MATLAB对脑电信号进行FFT处理

利用MATLAB对脑电信号进行FFT处理
EN

Stack Overflow用户
提问于 2014-04-19 07:41:06
回答 2查看 4.8K关注 0票数 1

我已经获得了一个5分钟的原始脑电图从Nexus10mark 2设备,它是给我输出在matlab作为1x76800行矢量。据我所知,选择的采样频率是256 hz,因此它给了我总共76800个采样点。没有在这个原始脑电信号上完成N点FFT。由于N只能是2的幂,所以我从生鸡蛋中提取65536(2 ^16)采样点,即从76800点提取65536点。现在我不能对这个向量(65536个采样点)进行快速傅立叶变换,请任何人都可以guide..as,我是个初学者。到目前为止我已经试过了

代码语言:javascript
复制
       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

我不知道下面的步骤是否正确.I无法从堆栈溢出的许多帖子中理解我去了through..please帮助.我不想像许多POSTS.PLEASE帮助一样使用EEGLAB

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-21 10:49:52

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

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2014-04-21 03:26:09

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

在我的笔记本电脑上,这个花费大约15毫秒。

FFT只能是2的幂,这是一种比较普遍的误解。混合基FFT的情况并非如此。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23167374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档