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

📄 readresfile.m

📁 含有多种ICA算法的eeglab工具箱
💻 M
字号:
%%%%%      <>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> %%      <                                                      > %  %      <                    DISCLAIMER:                       > %%      <                                                      > %%      <  THIS PROGRAM IS INTENDED FOR RESEARCH PURPOSES ONLY. > %%      <  THIS PROGRAM IS IN NO WAY INTENDED FOR CLINICAL OR   > %%      <                    OFFICIAL USE.                     > %%      <                                                      > %%      <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<> %%%%function [setup,sensorIndex,sensorInfo] = readresfile(folder,SETUP);%INPUTS--------------------------------------------------------------------%%   folder:   the directory and filename of the .ds data set that is%             to be read. If only the folder is inputted, SETUP = 1.%%   SETUP:  If SETUP = 0, when the program is run, 'setup' structure information will%           not be displayed automatically. %           If SETUP = 1, when the program is run, 'setup' structure information will%           automatically be displayed. %%OUTPUTS-------------------------------------------------------------------%   setup:  a structure of head information consisting of date, time, run%           name, run title, subject, run description, operator, number of%           channels, number of samples, sample rate, number of trials,%           duration, pretrigger points, sensor filename, head zeroing,%           and number of filters.%   %   sensorIndex: a structure with sensor information consisting of EEG sensors,%           MEG sensors, reference sensors, and other sensors.%   %   sensorInfo:   a structure with gain and offset information consisting of%           proper gain, Q gain, io gain, io offset, and index.if nargin == 1    SETUP=1;endcd(folder);[path,rootname] = fileparts(folder);fid4file = [rootname,'.res4'];[fid,message] = fopen(fid4file,'rb','s');%DATE/TIME-----------------------------------------------------------------fseek(fid,778,-1);tim = char(fread(fid,255,'char'));fseek(fid,1033,-1);dat = char(fread(fid,255,'char'));time = [tim]';date = [dat]';if SETUP    fprintf('\n Date Collected: %s',dat);    fprintf('\n Time Collected: %s',tim);    drawnowend%RUN NAME-----------------------------------------------------------------fseek(fid,1360,-1);r_name = char(fread(fid,32,'char'));run_name = [r_name]';if SETUP     fprintf('\n Run Name: %s',r_name);    drawnowend%RUN TITLE----------------------------------------------------------------fseek(fid,1392,-1);r_title = char(fread(fid,256,'char'));run_title = [r_title]';if SETUP     fprintf('\n Run Title: %s',r_title);    drawnowend%SUBJECT------------------------------------------------------------------fseek(fid,1712,-1);subj = char(fread(fid,32,'char'));subject = [subj]';if SETUP     fprintf('\n Subject: %s',subj);    drawnowend    %RUN DESCRIPTION-----------------------------------------------------------fseek(fid,1836,-1);setup = fread(fid,1,'int32');fseek(fid,1844,-1);run_description = char(fread(fid,setup,'char'));if SETUP     fprintf('\n Run Description: %s',run_description);    drawnowend%OPERATOR-----------------------------------------------------------------fseek(fid,1744,-1);oper = char(fread(fid,32,'char'));operator = [oper]';if SETUP     fprintf('\n Operator: %s',oper);    drawnowend%NUMBER OF CHANNELS--------------------------------------------------------fseek(fid,1292,-1);number_channels = (fread(fid,1,'int16')');if SETUP     fprintf('\n Number of Channels: %d',number_channels);    drawnowend%NUMBER OF SAMPLES---------------------------------------------------------fseek(fid,1288,-1);number_samples = (fread(fid,1,'int32')');if SETUP     fprintf('\n Number of Samples: %d',number_samples);    drawnowend%SAMPLE RATE---------------------------------------------------------------fseek(fid,1296,-1);sample_rate = fread(fid,1,'double')';if SETUP    fprintf('\n Sample Rate: %g Samples per Second',sample_rate);    drawnowend%NUMER OF TRIALS-----------------------------------------------------------fseek(fid,1312,-1);number_trials = fread(fid,1,'int16')';if SETUP    fprintf('\n Number of Trials: %g Trials',number_trials);    drawnowend%DURATION------------------------------------------------------------------fseek(fid,1304,-1);dur = fread(fid,1,'double')';duration = dur/number_trials;if SETUP     fprintf('\n Duration: %g Seconds per Trial',duration);    drawnowend%PRE_TRIG POINTS-----------------------------------------------------------fseek(fid,1316,-1);pretrig = fread(fid,1,'int32')';if SETUP     fprintf('\n Pre-Trigger Points: %g Samples',pretrig);    drawnowend%SENSOR FILE NAME----------------------------------------------------------fseek(fid,1776,-1);s_file_name = char(fread(fid,60,'char'));sensor_file_name = [s_file_name]';if SETUP     fprintf('\n Sensor File Name: %s',s_file_name);    drawnowend%HEAD ZEROING--------------------------------------------------------------fseek(fid,1348,-1);h_zero = fread(fid,1,'int32')';no_yes = {'no','yes'};head_zero = no_yes{h_zero+1};if SETUP     fprintf('\n Head Zeroing: %s',no_yes{h_zero+1});    drawnowend%FILTERS-------------------------------------------------------------------fseek(fid,1836,-1);nfsetup = fread(fid,1,'int32')';fseek(fid,1844,-1);char(fread(fid,nfsetup,'char'));number_filters = fread(fid,1,'int16');if SETUP     fprintf('\n Number of Filters: %d\n',number_filters);    drawnowendfor jk = 1:number_filters    freq=fread(fid,1,'double');    class=fread(fid,1,'int32');    type=fread(fid,1,'int32');    numparam=fread(fid,1,'int16');    params=fread(fid,numparam,'double');    if SETUP        fprintf(' -Filter # \t%g\n',jk)        fprintf(' -Frequency: \t%g Hz\n',freq)        fprintf(' -Class: \t%g\n',class)        fprintf(' -Type: \t%g\n',type)        if ~isempty(params)            fprintf(' -Parameter(s): \t%g\n',params)        end        drawnow    end    end               setup = struct('date',{date},'time',{time},'run_name',{run_name},'run_title',{run_title},'operator',{operator}...    ,'number_channels',{number_channels},'number_samples',{number_samples},'sample_rate',{sample_rate},...    'number_trials',{number_trials},'duration',{duration},'run_description',{run_description},'number_filters'...    ,{number_filters},'subject',{subject},'pretrig',{pretrig},'sensor_file_name',{sensor_file_name},'head_zero',{head_zero});sensorInfo = struct('proper_gain',[],'q_gain',[],'io_gain',[],'io_offset',[],'index',[],'extra',[],'channel_names',[]);for chan = 1:number_channels     temp = fread(fid,32,'char');    temp(temp>127) = 0;    temp(temp<0) = 0;    temp = strtok(temp,char(0));    sensorInfo(chan).channel_names = char(temp');endTime = linspace(-pretrig/sample_rate,duration - (pretrig/sample_rate),number_samples);for chan = 1:number_channels    ftell(fid);    sensorInfo(chan).index = fread(fid,1,'int16');    sensorInfo(chan).extra = fread(fid,1,'int16');    id = fread(fid,1,'int32')+1;    sensorInfo(chan).proper_gain = fread(fid,1,'double');    sensorInfo(chan).q_gain = fread(fid,1,'double');    sensorInfo(chan).io_gain = fread(fid,1,'double');    sensorInfo(chan).io_offset = fread(fid,1,'double');    fread(fid,1,'int16');    fread(fid,1,'int16');    fread(fid,1,'int32');    %fseek(fid,ftell(fid)+6,0);      for pos = 1:8        sensorInfo(chan).coil(pos).position.x = fread(fid,1,'double');        sensorInfo(chan).coil(pos).position.y = fread(fid,1,'double');        sensorInfo(chan).coil(pos).position.z = fread(fid,1,'double');        fread(fid,1,'double');        sensorInfo(chan).coil(pos).orient.x = fread(fid,1,'double');        sensorInfo(chan).coil(pos).orient.y = fread(fid,1,'double');        sensorInfo(chan).coil(pos).orient.z = fread(fid,1,'double');        fread(fid,1,'double');        fread(fid,1,'int16');        fread(fid,1,'int32');        fread(fid,1,'int16');        fread(fid,1,'double');                %fseek(fid,ftell(fid)+56,0);        %fseek(fid,ftell(fid)-80,0);    end        for pos = 1:8        sensorInfo(chan).hcoil(pos).position.x = fread(fid,1,'double');        sensorInfo(chan).hcoil(pos).position.y = fread(fid,1,'double');        sensorInfo(chan).hcoil(pos).position.z = fread(fid,1,'double');        fread(fid,1,'double');        sensorInfo(chan).hcoil(pos).orient.x = fread(fid,1,'double');        sensorInfo(chan).hcoil(pos).orient.y = fread(fid,1,'double');        sensorInfo(chan).hcoil(pos).orient.z = fread(fid,1,'double');        fread(fid,1,'double');        fread(fid,1,'int16');        fread(fid,1,'int32');        fread(fid,1,'int16');        fread(fid,1,'double');                %fseek(fid,ftell(fid)+56,0);        %fseek(fid,ftell(fid)+80,0);    end    %fseek(fid,ftell(fid)+1288,-1);endmegsens = find([sensorInfo.index] == 5);eegsens = find([sensorInfo.index] == 9);refsens = find([sensorInfo.index] == 0); refsens = [refsens,find([sensorInfo.index] == 1)];a = [megsens,eegsens,refsens];othersens = setdiff([1:setup.number_channels],a);sensorIndex = struct('refsens',{refsens},'othersens',{othersens},'eegsens',{eegsens},'megsens',{megsens});    %Location Coordinates of Channels in centimetersfor chan = 1:number_channels    switch sensorInfo(chan).index        %0=Reference Channels, 1=More Reference Channels, 5=MEG Channels          case {0,1,5}            coord = [sensorInfo(chan).hcoil(:).position];            coordx = [coord(1:2).x];            coordy = [coord(1:2).y];            coordz = [coord(1:2).z];            sensorInfo(chan).location = [coordx;coordy;coordz];            orient = [sensorInfo(chan).hcoil(:).orient];            orientx = [orient(1).x];            orienty = [orient(1).y];            orientz = [orient(1).z];            sensorInfo(chan).orientation = [orientx;orienty;orientz];            location =  sensorInfo(chan).location';            ps1=sum((location(1,:).*sensorInfo(chan).orientation(:,1)')')';            sensorInfo(chan).orientation(:,1) = (sign(ps1)*ones(1,3).*sensorInfo(chan).orientation(:,1)')';        %EEG Channels            case 9            coord = [sensorInfo(chan).hcoil(:).position];            coordx = [coord(1:2).x];            coordy = [coord(1:2).y];            coordz = [coord(1:2).z];            sensorInfo(chan).location = [coordx;coordy;coordz];    end         end 

⌨️ 快捷键说明

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