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

📄 eeg_region_peaks_script.m

📁 Matlab下的EEG处理程序库
💻 M
字号:
% EEG_REGION_PEAKS_Script to analyse regional ERP peaks

eeg_load_data_script;

% Define ERP time windows of analysis,
% corresponding to ERP component peak(s)
times = [300 700];

clear exp con

for g=1:length(groups),
	for s=1:length(subs),
        
        for t=1:size(times,1),
            
            % Find regional peaks for experimental condition
            
            sub = sprintf('%s%02d%s%s',groups{g},subs(s),cond{1},ext);
            fprintf('Selecting %s\n',sub);
            p.volt.data = eval(sub);
		    p.volt.timeArray = timeArray;
            
            regions = eeg_region_peaks(p,times(t,:));
            
            exp(t,g).sub(s,:)      = {sub};
            exp(t,g).group(s,:)    = groups(g);
            exp(t,g).cond(s,:)     = cond(1);
            exp(t,g).times(s,:)    = times(t,:);
            exp(t,g).names(s,:)    = {regions.name};
            exp(t,g).pospeaks(s,:) = [regions.pospeaks];
            exp(t,g).postimes(s,:) = [regions.postimes];
            exp(t,g).poselecs(s,:) = [regions.poselecs];
            exp(t,g).negpeaks(s,:) = [regions.negpeaks];
            exp(t,g).negtimes(s,:) = [regions.negtimes];
            exp(t,g).negelecs(s,:) = [regions.negelecs];
            
            
            % Run control condition, being careful to select the
            % same electrodes in each region where peaks are
            % detected in the above experimental condition
            
            sub = sprintf('%s%02d%s%s',groups{g},subs(s),cond{2},ext);
            fprintf('Selecting %s\n',sub);
            p.volt.data = eval(sub);
		    p.volt.timeArray = timeArray;
	
            % obtain all +ve/-ve peak electrodes from the experimental
            % condition to redefine the region structure array and
            % thereby control exp/con electrode selection
            for r=1:length(regions),
                posregion(r).name = regions(r).name;
                posregion(r).elec = regions(r).poselecs;
                negregion(r).name = regions(r).name;
                negregion(r).elec = regions(r).negelecs;
            end
            
            clear regions
            
            regions = eeg_region_peaks(p,times(t,:),posregion);
            
            con(t,g).sub(s,:)      = {sub};
            con(t,g).group(s,:)    = groups(g);
            con(t,g).cond(s,:)     = cond(2);
            con(t,g).times(s,:)    = times(t,:);
            con(t,g).names(s,:)    = {regions.name};
            con(t,g).pospeaks(s,:) = [regions.pospeaks];
            con(t,g).postimes(s,:) = [regions.postimes];
            con(t,g).poselecs(s,:) = [regions.poselecs];
            
            clear regions
            
            regions = eeg_region_peaks(p,times(t,:),negregion);
            
            con(t,g).negpeaks(s,:) = [regions.negpeaks];
            con(t,g).negtimes(s,:) = [regions.negtimes];
            con(t,g).negelecs(s,:) = [regions.negelecs];
            
            clear regions posregion negregion
            
        end
	end
end

clear g s r sub p

regions = elec_regions;

% For export to SPSS, use this format
Sub = char([exp(1,1).sub; exp(1,2).sub]);
Gp  = [ones(length(exp(1,1).sub),1); ones(length(exp(1,1).sub),1) * 2];


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Need to repeat for loop below for postimes/negpeaks/negtimes
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


for t = 1:size(times,1),
    
	[path,name,ext] = fileparts(strcat(eegpath,'regions_',num2str(times(t)),'.txt'));
	file = fullfile(path,[name ext]);
    
    fid = fopen(file,'w');
	
	fprintf(fid,'%-15s\t%-8s\t','Subjects','Group');
	ExpCond = strcat(exp(1,1).names(1,:),'exp');
	fprintf(fid,'%-10s\t',ExpCond{:});
	ConCond = strcat(con(1,1).names(1,:),'con');
	fprintf(fid,'%-10s\t',ConCond{:});
	fprintf(fid,'\n');
	
	Exp = [exp(t,1).pospeaks; exp(t,2).pospeaks];
	Con = [con(t,1).pospeaks; con(t,2).pospeaks];
	
	Data = [Exp,Con];
	
	format = '%-15s\t%-8d\t';
	for i=1:length(regions)*2,format = strcat(format,'%10.4f\t'); end
	format = strcat(format,'\n');
	
	for i=1:length(Sub),
        fprintf(fid,format,Sub(i,:),Gp(i),Data(i,:));
	end
    fclose(fid);
    
    fprintf('\n\nRegion peaks results in file:\n... %s\n',file);
    fprintf('\nThis file can be imported into SPSS as text.\n');
end




% Cannot run full MANOVA with matlab (04/2002)
return




% Run stats in matlab
MODEL = 'full';
SSTYPE = 3;
DISPLAYOPT = 'off';
for t = 1:size(times,1),
	for r = 1:length(regions),
        
        cont = [exp(t,1).pospeaks(:,r); con(t,1).pospeaks(:,r)];
        ptsd = [exp(t,2).pospeaks(:,r); con(t,2).pospeaks(:,r)];
        
        Y = [cont; ptsd];
        
        GROUP1 = {'CONT'};
        GROUP2 = {'PTSD'};
        GROUPS = [ repmat(GROUP1,size(exp(t,1).pospeaks(:,r))); ...
                   repmat(GROUP1,size(con(t,1).pospeaks(:,r))); ...
                   repmat(GROUP2,size(exp(t,2).pospeaks(:,r))); ...
                   repmat(GROUP2,size(con(t,2).pospeaks(:,r))) ];
        
        EXP = {'tac'};
        CON = {'oac'};
        CONDITIONS = [ repmat(EXP,size(exp(t,1).pospeaks(:,r))); ...
                       repmat(CON,size(con(t,1).pospeaks(:,r))); ...
                       repmat(EXP,size(exp(t,2).pospeaks(:,r))); ...
                       repmat(CON,size(con(t,2).pospeaks(:,r))) ];
        
        GROUP = {GROUPS CONDITIONS};
        GNAME = strvcat('Group', 'Task');
        
        [anova(t,r).p,anova(t,r).table] = ANOVAN(Y,GROUP,MODEL,SSTYPE,GNAME,DISPLAYOPT) ;
        
	end
end
clear Y GROUP MODEL SSTYPE GNAME DISPLAYOPT;

⌨️ 快捷键说明

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