使用Matlab FFT从EEG信号中提取频率

时间:2012-05-09 13:19:32

标签: matlab fft frequency

我是BCI的新手。我有Neurosky的Mindset EEG设备,我在csv文件中记录来自设备的Raw数据值。我可以将csv中的数据读取并提取到Matlab中,并应用FFT。我现在需要从FFT中提取某些频率(Alpha,Beta,Theta,Gamma)。

Delta = 1-3 Hz

Theta = 4-7 Hz

Alpha = 8-12 Hz

Beta = 13-30 Hz

Gamma = 31-40 Hz

这是我到目前为止所做的:

f = (0:N-1)*(Fs/N);
plot(rawDouble);
title ('Raw Signal');
p = abs(fft(rawDouble));
figure,plot (f,p);
title('Magnitude of FFT of Raw Signal');

谁能告诉我如何从信号中提取那些特定的频率范围?非常感谢你!

3 个答案:

答案 0 :(得分:3)

为了便于使用MatLab分析EEG数据,您可以考虑使用EEGLAB工具箱(http://sccn.ucsd.edu/eeglab/)或fieldtrip工具箱(http://fieldtrip.fcdonders.nl/start)。

两个工具箱都附带了很好的教程:

http://sccn.ucsd.edu/eeglab/eeglabtut.html

http://fieldtrip.fcdonders.nl/tutorial

答案 1 :(得分:1)

您可能会发现使用MATLAB的periodogram函数更容易,而不是尝试直接使用FFT。这将负责为您提供数据窗口以及各种其他实现细节。

答案 2 :(得分:0)

我认为最简单的方法是在加载数据后过滤掉这些范围内的信号。 E.g。

  

band = [30 100] eeglocal.lowpass(band(2))。highpass(band(1));

然后你可以选择你想要处理的时间。

这应该就是你所需要的。