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

📄 writelocs.m

📁 含有多种ICA算法的eeglab工具箱
💻 M
字号:
% writelocs() - write a file containing channel location, type and gain information%             % Usage:%   >> writelocs( chanstruct, filename );%   >> writelocs( chanstruct, filename, 'key', 'val' );%% Inputs:%   chanstruct - EEG.chanlocs data structure returned by readlocs() containing%                channel location, type and gain information.%   filename   - File name for saving channel location, type and gain information%% Optional inputs:%   'filetype'  - ['loc'|'sph'|'sfp'|'xyz'|'polhemus'|'besa'|'chanedit'|'custom'] %                 Type of the file to write. By default the file type is indicated %                 by the file extension. %                  'loc' - An EEGLAB 2-D polar coordinates channel locations file %                          Coordinates are theta and radius (see definitions below).%                  'sph' - A Matlab spherical coordinates file (Note: spherical%                          coordinates used by Matlab functions are different %                          from spherical coordinates used in BESA - see below).%                  'sfp' - EGI cartesian coordinates (not Matlab cartesian - see below).%                  'xyz' - MATLAB/EEGLAB cartesian coordinates (Not EGI cartesian; %                          z is toward nose; y is toward left ear; z is toward vertex).%                  'polhemus' or 'polhemusx' - Polhemus electrode location file recorded with %                          'X' on sensor pointing to subject (see below and readelp()).%                  'polhemusy' - Polhemus electrode location file recorded with %                          'Y' on sensor pointing to subject (see below and readelp()).%                  'besa' - BESA'(.elp') spherical coordinate file. (Not MATLAB spherical%                           - see below).%                  'chanedit' - EEGLAB channel location files created by pop_chanedit().%                  'custom' - Ascii files with columns in user-defined 'format' (see below).%   'format'    - [cell array] Format of a 'custom' channel location file (see above).%                          Default if no file type is defined. The cell array contains%                          labels defining the meaning of each column of the input file:%                           'channum'   [positive integer] channel number %                           'labels'    [string] channel name (no spaces)%                           'theta'     [real degrees] 2-D angle in polar coordinates; %                                       positive = rotating from nose (0) toward left ear %                           'radius'    [real] radius in 2-D polar coords (0.5 is disk limits)%                           'X'         [real] Matlab-cartesian X coordinate (to nose)%                           'Y'         [real] Matlab-cartesian Y coordinate (to left ear)%                           'Z'         [real] Matlab-cartesian Z coordinate (to vertex)%                           '-X','-Y','-Z' Matlab-cartesian coordinates pointing away from above%                           'sph_theta' [real degrees] Matlab spherical horizontal angle; %                                       positive = rotating from nose (0) toward left ear.%                           'sph_phi'   [real degrees] Matlab spherical elevation angle;%                                       positive = rotating from horizontal (0) upwards.%                           'sph_radius' [real] distance from head center (unused) %                           'sph_phi_besa' [real degrees] BESA phi angle from vertical; %                                       positive = rotating from vertex (0) towards right ear.%                           'sph_theta_besa' [real degrees] BESA theta horiz/azimuthal angle; %                                       positive = rotating from right ear (0) toward nose.%     The input file may also contain other channel information fields%                           'type'      channel type: 'EEG', 'MEG', 'EMG', 'ECG', others ...%                           'calib'     [real near 1.0] channel calibration value.%                           'gain'      [real > 1] channel gain. %                           'custom1'   custom field #1.%                           'custom2', 'custom3', 'custom4' more custom fields.%   'unicoord'     - ['on'|'off'] Uniformize all coordinates. Default 'on'.%   'header'       - ['on'|'off'] Add a header comment line with the name of each column.%                             Comment lines begin with '%'. Default is 'off'.%   'customheader' - [string] Add a custom header at the beginning of the file and%                             preceded by '%'.  If used with 'header' set to 'on', %                             the column names will be insterted after the custom header.%   'elecind' - [integer array] Indices of channels to export. %                             Default is all channels.%% Note: for file formats, see readlocs() help  (>> help readlocs)%% Author: Arnaud Delorme, Salk Institute, 16 Dec 2002%% See also: readlocs(), readelp()%123456789012345678901234567890123456789012345678901234567890123456789012% Copyright (C) Arnaud Delorme, CNL / Salk Institute, 28 Feb 2002%% This program is free software; you can redistribute it and/or modify% it under the terms of the GNU General Public License as published by% the Free Software Foundation; either version 2 of the License, or% (at your option) any later version.%% This program is distributed in the hope that it will be useful,% but WITHOUT ANY WARRANTY; without even the implied warranty of% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the% GNU General Public License for more details.%% You should have received a copy of the GNU General Public License% along with this program; if not, write to the Free Software% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA% $Log: writelocs.m,v $% Revision 1.10  2003/05/13 23:18:51  arno% default unicoord on%% Revision 1.9  2003/05/13 23:13:23  arno% verbose off for convertlocs%% Revision 1.8  2003/05/13 22:30:57  arno% unicoord%% Revision 1.7  2003/05/13 22:10:26  arno% debuging writing display%% Revision 1.6  2003/05/13 21:53:50  arno% debug header custom%% Revision 1.5  2003/05/13 21:42:17  arno% debugging header writing%% Revision 1.4  2002/12/29 00:17:33  scott% header%% Revision 1.3  2002/12/27 23:05:18  scott% edit header message - needs more details!! -sm% .,%% Revision 1.2  2002/12/24 16:53:58  arno% convertelocs -> convertlocs%% Revision 1.1  2002/12/24 01:25:27  arno% Initial revision%function writelocs( chans, filename, varargin ); if nargin < 2	help writelocs;	return;end;% get infos from readlocs% -----------------------[listtype formatinfo listcolformat formatskip] = readlocs('getinfos');g = finputcheck( varargin, ...                 { 'filetype'	  'string'	 listtype 			'loc';                   'header'       'string'   { 'on' 'off' } 	'off';                   'customheader' 'string'   [] 					'';                   'elecind'      'integer'  [1 Inf]				[];                   'unicoord'     'string'   { 'on' 'off' } 	'on';                    'format'		  'cell'	 []					{} }, 'writelocs');if isstr(g), error(g); end;  if strcmpi(g.unicoord, 'on')    disp('Uniformizing coordinates');    chans = convertlocs(chans, 'auto', 'verbose', 'off');end;% select channels% ---------------if ~isempty(g.elecind)	chans = chans(g.elecind);end;% finding types of input% ----------------------if isempty(g.format)   indexformat = strmatch(lower(g.filetype), listtype, 'exact');   g.format = formatinfo{indexformat};   g.skipline = formatskip(indexformat);else    g.skipline = 0;   end;% creating file% -------------fid = fopen(filename, 'w');% exporting header% ----------------if ~isempty(g.customheader)    allstrs = cellstr(g.customheader);    for index=1:length(allstrs)        fprintf(fid, '%s\n', allstrs{index});    end;end;if  strcmpi(g.header, 'on') | g.skipline == 2   for index=1:length(g.format)      fprintf(fid, '%8s\t', g.format{index});   end;   fprintf(fid, '\n');   for index=1:length(g.format)      fprintf(fid, '%8s\t', char(ones(1,8)*45));   end;   fprintf(fid, '\n');end;if g.skipline == 1   fprintf(fid, '%d\n', length(chans));end;         % writing infos% -------------for indexchan = 1:length(chans)   for index=1:length(g.format)      [str, mult] = checkformat(g.format{index});      if strcmpi(str, 'channum')         fprintf(fid, '%d', indexchan);      else         if ~isfield(chans, str)            error([ 'Non-existant field: ''' str '''' ]);         end;         eval( [ 'chanval = chans(indexchan).' str ';' ] );         if   isstr(chanval), fprintf(fid, '%8s', chanval);         else   	             if abs(mult*chanval) > 1E-10                 fprintf(fid, '%8s', num2str(mult*chanval,5));             else                 fprintf(fid, '%8s', '0');             end;         end;      end;      if index ~= length(g.format)         fprintf(fid, '\t');      end;            end;   fprintf(fid, '\n');end;fclose(fid);return;% check field format% ------------------function [str, mult] = checkformat(str)	mult = 1;	if strcmpi(str, 'labels'), str = lower(str); return; end;	if strcmpi(str, 'channum'), str = lower(str); return; end;	if strcmpi(str, 'theta'), str = lower(str); return; end;	if strcmpi(str, 'radius'), str = lower(str); return; end;	if strcmpi(str, 'sph_theta'), str = lower(str); return; end;	if strcmpi(str, 'sph_phi'), str = lower(str); return; end;	if strcmpi(str, 'sph_radius'), str = lower(str); return; end;	if strcmpi(str, 'sph_theta_besa'), str = lower(str); return; end;	if strcmpi(str, 'sph_phi_besa'), str = lower(str); return; end;	if strcmpi(str, 'gain'), str = lower(str); return; end;	if strcmpi(str, 'calib'), str = lower(str); return; end;	if strcmpi(str, 'X'), str = upper(str); return; end;	if strcmpi(str, 'Y'), str = upper(str); return; end;	if strcmpi(str, 'Z'), str = upper(str); return; end;	if strcmpi(str, '-X'), str = upper(str(2:end)); mult = -1; return; end;	if strcmpi(str, '-Y'), str = upper(str(2:end)); mult = -1; return; end;	if strcmpi(str, '-Z'), str = upper(str(2:end)); mult = -1; return; end;	if strcmpi(str, 'custum1'), return; end;	if strcmpi(str, 'custum2'), return; end;	if strcmpi(str, 'custum3'), return; end;	if strcmpi(str, 'custum4'), return; end;   error(['writelocs: undefined field ''' str '''']);   

⌨️ 快捷键说明

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