⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readepochs.m

📁 读取CTF脑磁图数据的Matlab代码
💻 M
字号:
function [data,ctf]=readepochs(folder,varargin);
%
%
%
%      <>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> %
%      <                                                       > %  
%      <                      DISCLAIMER:                      > %
%      <                                                       > %
%      <  THIS PROGRAM IS INTENDED FOR RESEARCH PURPOSES ONLY. > %
%      <  THIS PROGRAM IS IN NO WAY INTENDED FOR CLINICAL OR   > %
%      <                     OFFICIAL USE.                     > %
%      <                                                       > %
%      <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<> %
%
%
%
% function to read set time windows (epochs) around event markers.
%
for i = 1:size(varargin,2)
    if ischar(varargin{i})
        switch varargin{i}
            case 'marker_info',
                marker_info = varargin{i+1};
            case 'ctf',
                ctf = varargin{i+1};
        end
    end
end
            
if ~exist('marker_info','var')
    marker_info = readmarkerfile(folder);
end
if ~exist('ctf','var')
    ctf = ctf_read_res4(folder,1);
end
CHAN = ctf.sensor.index.meg;
trials = [1:ctf.setup.number_trials];
win = 'all';

for i = 1:size(varargin,2)
    if ischar(varargin{i})
        switch varargin{i}
            case 'meg',
                CHAN = ctf.sensor.index.meg(varargin{i+1});
            case 'ref',
                CHAN = ctf.sensor.index.ref(varargin{i+1});
            case 'eeg',
                CHAN = ctf.sensor.index.eeg(varargin{i+1});
            case 'other',
                CHAN = ctf.sensor.index.other(varargin{i+1});
            case 'vc',
                CHAN = ctf.sensor.index.vc(varargin{i+1});
            case 'all',
                CHAN = [1:ctf.setup.number_channels];
            case 'trials'
                trials = varargin{i+1};
            case 'markers'
                marks = varargin{i+1};
            case 'window'
                win = varargin{i+1};
        end
    end
end

if ~exist('marks','var')
    [ctf] = ctf_read_meg4(folder,ctf,CHAN,win,trials);
    epochs = cell(1,1);
    epochs{1} = zeros(size(ctf.data{1},1),size(ctf.data{1},2),size(ctf.data,1));
    for i = 1:size(ctf.data,1)
        epochs{1}(:,:,i)=ctf.data{i};
    end
else   
    nm=size(marks,2);
    epochs=cell(1,nm);
    for mkr = 1:nm
        mk=ismember(marker_info.marker_names,marks(mkr));
        nsamp=marker_info.number_samples(mk)
        nss=0;
        for ns=1:nsamp
            tr=marker_info.trial_times{mk}(ns,1);
            if ismember(tr,trials)
                nss=nss+1;
                tim=marker_info.trial_times{mk}(ns,2);
                times=win+tim;
                [ctf2] = ctf_read_meg4(folder,ctf,CHAN,times,tr);
                temp=ctf2.data{1};
                if nss==1
                    epochs{mkr}=zeros(size(temp,1),size(temp,2),1);
                end
                epochs{mkr}(:,:,nss)=temp;
            end
        end
    end
end
data = struct('epochs',{epochs},'setup',{ctf.setup},'sensor',{ctf.sensor}); 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -