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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章