topo2sph.m

来自「含有多种ICA算法的eeglab工具箱」· M 代码 · 共 148 行

M
148
字号
% topo2sph() - convert a topoplot() style 2-D polar-coordinate%              channel locations file to a 3-D spherical-angle%              file for use with headplot()% Usage: %   >> [c h] = topo2sph('eloc_file','eloc_outfile', method, unshrink);%   >> [c h] = topo2sph( topoarray, method, unshrink );%% Inputs:%   'eloc_file'    = filename of polar 2-D electrode locations file used by %                    topoplot(). See >> topoplot example or cart2topo()%   'eloc_outfile' = output file of 3-D electrode locations in spherical angle %                    coords. for use in headplot().%   topoarray      = polar array of 2-D electrode locations, with polar angle%                    in the first column and radius in the second one.%   method         = [1|2] 1 is for Besa compatibility, 2 is for%                    compatibility with Matlab function cart2sph(). {default: 2}%   unshrink       = [0<real<1] unshrink factor. Enter a shrink factor used%                    to convert spherical to topo (see sph2topo()). Only %                    implemented for 'method' 1 (above). Electrode 'shrink' %                    is now deprecated. See >> help topoplot% Outputs:%   c = coronal rotation%   h = horizontal rotation%% Author: Scott Makeig & Arnaud Delorme, SCCN/INC/UCSD, La Jolla, 1999 %% See also: sph2topo(), cart2topo()%123456789012345678901234567890123456789012345678901234567890123456789012% Copyright (C) 1999 Scott Makeig, SCCN/INC/UCSD, scott@sccn.ucsd.edu%% 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: topo2sph.m,v $% Revision 1.5  2004/03/22 03:46:16  scott% unshrink help message%% Revision 1.4  2002/07/12 17:27:28  arno% programming unshrink factor%% Revision 1.3  2002/06/29 22:55:21  arno% type% typo%% Revision 1.2  2002/06/29 01:25:09  arno% adding besa compatibility% ,%% Revision 1.1  2002/04/05 17:36:45  jorn% Initial revision%% 3-16-00 changed name to topo2sph() for compatibility with cart2topo() -sm% 01-25-02 reformated help & license -ad % 03-22-02 complete remodeling for returning arguments and taking arrays -ad function [c, h] = topo2sph(eloc_locs,eloc_angles, method, unshrink)MAXCHANS = 1024;if nargin < 1    help topo2sph;    return;end;if nargin > 1 & ~isstr(eloc_angles)	if nargin > 2		unshrink = method;	end;	method = eloc_angles;else	method = 2;end;if isstr(eloc_locs)	fid = fopen(eloc_locs);	if fid<1,	    fprintf('topo2sph()^G: cannot open eloc_loc file (%s)\n',eloc_locs)	    return	end	E = fscanf(fid,'%d %f %f  %s',[7 MAXCHANS]);	E = E';	fclose(fid);else    E = eloc_locs;    E = [ ones(size(E,1),1) E ];end;    if nargin > 1 & isstr(eloc_angles)	if exist(eloc_angles)==2,	   fprintf('topo2sph: eloc_angles file (%s) already exists and will be erased.\n',eloc_angles);	end	fid = fopen(eloc_angles,'a');	if fid<1,	    fprintf('topo2sph()^G: cannot open eloc_angles file (%s)\n',eloc_angles)	    return	endend;if method == 2	t = E(:,2); % theta	r = E(:,3); % radius	h = -t;  % horizontal rotation	c = (0.5-r)*180;else	for e=1:size(E,1)		% (t,r) -> (c,h)				t = E(e,2); % theta		r = E(e,3); % radius		r = r*unshrink;		if t>=0			h(e) = 90-t; % horizontal rotation		else			h(e) = -(90+t);		end		if t~=0			c(e) = sign(t)*180*r; % coronal rotation		else			c(e) = 180*r;		end	end;	t = t';	r = r';end;for e=1:size(E,1)   if nargin > 1 & isstr(eloc_angles)        chan = E(e,4:7);        fprintf('%d	%g	%g	%s\n',E(e,1),c(e),h(e),chan);        fprintf(fid,'%d	%g	%g	%s\n',E(e,1),c(e),h(e),chan);   end;     end

⌨️ 快捷键说明

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