gtec设备采集脑电(MATLAB)

MATLAB API V1.16.00

说明:API使用手册提供的demo中是使用while函数,当采集到指定长度的脑电信号之后停止,因为matlab本身是一行一行代码完成的,那么在实际和范式结合的时候,不能满足同时呈现范式以及采集当前刺激下脑电的记录,因此使用timer函数进行信号的采集

clc;
%初始化PTB设置,因为懒得写延时的代码,用的PTB的waitsecs函数
PsychDefaultSetup(2);
%因为用到timer,初始化全局变量
global gds_interface
global eegdata
gds_interface = gtecDeviceInterface();
eegdata = [];%初始化空矩阵用于存放eegdata
%端口设置
gds_interface.IPAddressHost = '127.0.0.1';
gds_interface.IPAddressLocal = '127.0.0.1';
gds_interface.LocalPort = 50224;
gds_interface.HostPort = 50223;
%连接设备
connected_devices = gds_interface.GetConnectedDevices();
%确认设备为USBamp
gusbamp_config = gUSBampDeviceConfiguration();
gusbamp_config.Name = connected_devices(1,1).Name;
gds_interface.DeviceConfigurations = gusbamp_config;
%获取可用通道数目
available_channels = gds_interface.GetAvailableChannels();
%设置采样率和扫描数
gusbamp_config.SamplingRate = 256;
gusbamp_config.NumberOfScans = 8;
%通道设置,滤波等
for i=1:size(gusbamp_config.Channels,2)
    if (available_channels(1,i))
    	gusbamp_config.Channels(1,i).Available = true;
        gusbamp_config.Channels(1,i).Acquire = true;
        % do not use filters
        gusbamp_config.Channels(1,i).BandpassFilterIndex = 49;
        gusbamp_config.Channels(1,i).NotchFilterIndex =2;
        % do not use a bipolar channe
        gusbamp_config.Channels(1,i).BipolarChannel = 0;
    end
end
%应用以上设置
gds_interface.DeviceConfigurations = gusbamp_config;
gds_interface.SetConfiguration();
%设置定时器,用于连续读取缓冲区的脑电信号
t=timer('Name','geteegdata','TimerFcn',{@geteegdata},'Period',0.3,'ExecutionMode','fixedSpacing');
%开始采集(缓冲区开始读取)
gds_interface.StartDataAcquisition();
%计时器开始工作,记录脑电
start(t);
WaitSecs(4);%4s
%停止计时器
stop(t);
%缓冲区停止获取数据
gds_interface.StopDataAcquisition();
%删除计时器
delete(t);
%解除设备占用
delete(gds_interface);
clear gds_interface;
clear gusbamp_config;
%save eegdata; %保存脑电数据以离线处理
%画图看一下
plot(eegdata(:,1));%通道1的
xlabel('channel 1');
ylabel('a');

%计时器回调函数
function geteegdata(~,~)
         global gds_interface
         global eegdata
         global data
         [~ , data] = gds_interface.GetData();
         eegdata=[eegdata;data];
end
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章