ctf_write_headshape.m

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

M
207
字号
function ctf_write_headshape(HeadShape,mri,file)% ctf_write_headshape - write a CTF .shape file%% ctf_write_headshape(HeadShape,mri,file)%% - HeadShape is Nx3 list of coordinates in the CTF head shape coordinates.% - mri is a struct returned by ctf_read_mri; if it is empty, this function% will prompt with a file browser and read in the file identified.  The mri% struct contains the mri.file field, which is used to define the name of% the .shape and the .shape_info output files (unless the optional 'file'% input is given).  Also, the fiducials and other information in this% struct are required to output the .shape_info file.  The .shape and% .shape_info files are required to import the data into CTF's MRIViewer.%% The *.shape file is an ascii text file in the following format:%% Number of Points% x1 y1 z1% x2 y2 z2% .% .% .% xn yn zn%% These vertex coordinates are contained in the input HeadShape% matrix (Nx3).  The coordinate values must be in centimeters in% either the voxel MRI coordinate system or the MEG Head Coordinate% System (see ctf_read_mri for more about the coordinate system).%% This function assumes the MEG head coordinate system is required.% The values in the input HeadShape matrix (Nx3) should be in% centimeteres, with the column values representing X, Y, Z, such% that +X is toward the nasion, +Y is left preauricular and +Z is% superior.  The values are given with respect to the origin, which% lies half way between the left and right preauricular fiducials.  It is% essential that the fiducials are defined and saved in the .mri file for% this function to operate correctly.%% see also ctf_write_mrishape ctf_read_mri ctf_mri2head ctf_head2mri%% $Revision: 1.3 $ $Date: 2004/07/18 06:10:17 $% Copyright (C) 2004  Darren L. Weber% % 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.% History:  02/2004, Darren.Weber_at_radiology.ucsf.edu%                    - adapted from an appendex to CTF document%                    MRIViewer.pdf%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ver = '[$Revision: 1.3 $]';fprintf('\nCTF_WRITE_HEADSHAPE [v%s]\n',ver(12:16));  tic;%--------------------------------------------------% check the mri input variableif exist('mri','var'),  if isfield(mri,'file'),    % great!  else    fprintf('...cannot find mri.file\n');    [fileName, filePath] = uigetfile('*.mri', 'Pick a CTF .mri file');    mri.file = fullfile(filePath,fileName);    mri = ctf_read_mri(mri.file);  endelse  [fileName, filePath] = uigetfile('*.mri', 'Pick a CTF .mri file');  mri.file = fullfile(filePath,fileName);  mri = ctf_read_mri(mri.file);endif exist('file','var'),    shapeFile = file;else    shapeFile = [mri.file,'.head.shape'];endshapeInfoFile = [shapeFile,'_info'];    %--------------------------------------------------% output the .shape filefid = fopen(shapeFile,'w');if isequal(fid,-1),    S=sprintf('Could not open file: "%s"',shapeFile);    error(S);else        fprintf('...writing to file:\n   %s\n',shapeFile);    fprintf('...writing CTF .shape file, with head coordinates\n');    tic;        % Write vertices    Nvertices = size(HeadShape,1);    fprintf(fid,'%d\n',Nvertices);        for v = 1:Nvertices,      fprintf(fid,'%6.3f %6.3f %6.3f\n',HeadShape(v,1),HeadShape(v,2),HeadShape(v,3));    end        fclose(fid);        t = toc;    fprintf('...done (%6.2f sec).\n',t);    end%--------------------------------------------------% output the .shape_info filefid = fopen(shapeInfoFile,'w');if isequal(fid,-1),    S=sprintf('Could not open file: "%s"',shapeInfoFile);    error(S);else    fprintf('...writing to file:\n   %s\n',shapeInfoFile);  fprintf('...writing CTF .shape_info file, with head coordinates\n');  tic;    [mriFilePath,mriFileName,mriFileExt] = fileparts(mri.file);    nasion = [ mri.hdr.HeadModel_Info.Nasion_Sag,   mri.hdr.HeadModel_Info.Nasion_Cor,   mri.hdr.HeadModel_Info.Nasion_Axi ];  left   = [ mri.hdr.HeadModel_Info.LeftEar_Sag,  mri.hdr.HeadModel_Info.LeftEar_Cor,  mri.hdr.HeadModel_Info.LeftEar_Axi ];  right  = [ mri.hdr.HeadModel_Info.RightEar_Sag, mri.hdr.HeadModel_Info.RightEar_Cor, mri.hdr.HeadModel_Info.RightEar_Axi ];    fprintf(fid,'// *************************************\n');  fprintf(fid,'// 	 Headshape File Information \n');  fprintf(fid,'// *************************************\n');  fprintf(fid,'\n');  fprintf(fid,'MRI_Info\n');  fprintf(fid,'{\n');  fprintf(fid,'	VERSION:	1.00\n');  fprintf(fid,'\n');  fprintf(fid,'	FILENAME:	%s\n',[mriFileName,mriFileExt]);  fprintf(fid,'\n');  fprintf(fid,'	// Fid. Points	Sag	Cor	Axi\n');  fprintf(fid,'	NASION:\t\t\t%5.1f %5.1f %5.1f\n',nasion(1),nasion(2),nasion(3));  fprintf(fid,'	LEFT_EAR:\t\t%5.1f %5.1f %5.1f\n',left(1),left(2),left(3));  fprintf(fid,'	RIGHT_EAR:\t%5.1f %5.1f %5.1f\n',right(1),right(2),right(3));  fprintf(fid,'\n');  fprintf(fid,'	MM_PER_VOXEL_SAGITTAL:\t\t%10.8f\n', mri.hdr.mmPerPixel_sagittal);  fprintf(fid,'	MM_PER_VOXEL_CORONAL:\t\t%10.8f\n',  mri.hdr.mmPerPixel_coronal);  fprintf(fid,'	MM_PER_VOXEL_AXIAL:\t\t\t%10.8f\n',  mri.hdr.mmPerPixel_axial);  fprintf(fid,'\n');  fprintf(fid,'	COORDINATES:	HEAD\n');  fprintf(fid,'\n');  fprintf(fid,'}\n');    fclose(fid);    t = toc;  fprintf('...done (%6.2f sec).\n\n',t);  endreturn%// *************************************%//       Headshape File Information%// *************************************% %MRI_Info%{%        VERSION:        1.00% %        FILENAME:       ucsf_mh_orig_axial_las2ctf.mri% %        // Fid. Points          Sag     Cor     Axi%        NASION:                 128.0   35.0    130.0%        LEFT_EAR:               53.0    123.0   152.0%        RIGHT_EAR:              207.0   123.0   152.0% %        MM_PER_VOXEL_SAGITTAL:          1.00000000%        MM_PER_VOXEL_CORONAL:           1.00000000%        MM_PER_VOXEL_AXIAL:             1.00000000% %        COORDINATES:    MRI% %}

⌨️ 快捷键说明

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