0001 function [scan3dd] = elec_load_scan_3ddasc(filename)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068 ver = '$Revision: 1.1 $';
0069 fprintf('\nELEC_LOAD_SCAN_3DDASC [v %s]\n',ver(11:15));
0070
0071 tic;
0072
0073 [path,name,ext] = fileparts(filename);
0074 file = fullfile(path,[name ext]);
0075
0076 fprintf('...loading electrodes from:\n\t%s\n', file);
0077
0078 scan3dd = read_3dd(file);
0079
0080 fprintf('...loaded %d electrodes\n', size(scan3dd.x,1));
0081
0082 t = toc; fprintf('...done (%6.2f sec).\n\n',t);
0083
0084 return
0085
0086
0087
0088
0089
0090
0091 function scan3dd = read_3dd(file),
0092
0093
0094 scan3dd.label = [];
0095 scan3dd.x = [];
0096 scan3dd.y = [];
0097 scan3dd.z = [];
0098 scan3dd.hsp = [];
0099
0100
0101
0102 fid = fopen(file);
0103 if fid < 0,
0104 msg = sprintf('cannot open file: %s\n',file);
0105 error(msg);
0106 end
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121 fprintf('...searching for fiducials...');
0122
0123 n = 0;
0124 while n < 5,
0125 tmp = fgetl(fid);
0126 if tmp < 0, break; end
0127
0128 tmp = lower(tmp);
0129
0130 if strfind(tmp,'nasion'),
0131 tmp = sscanf(tmp,'%s %d %f %f %f');
0132 scan3dd.nasion = [tmp(end-2) tmp(end-1) tmp(end)];
0133 n = n + 1;
0134 continue;
0135 end
0136 if strfind(tmp,'left'),
0137 tmp = sscanf(tmp,'%s %d %f %f %f');
0138 scan3dd.lpa = [tmp(end-2) tmp(end-1) tmp(end)];
0139 n = n + 1;
0140 continue;
0141 end
0142 if strfind(tmp,'right'),
0143 tmp = sscanf(tmp,'%s %d %f %f %f');
0144 scan3dd.rpa = [tmp(end-2) tmp(end-1) tmp(end)];
0145 n = n + 1;
0146 continue;
0147 end
0148 if strfind(tmp,'centroid'),
0149 tmp = sscanf(tmp,'%s %d %f %f %f');
0150 scan3dd.origin = [tmp(end-2) tmp(end-1) tmp(end)];
0151 n = n + 1;
0152 continue;
0153 end
0154 if strfind(tmp,'ref'),
0155 tmp = sscanf(tmp,'%s %d %f %f %f');
0156 scan3dd.ref = [tmp(end-2) tmp(end-1) tmp(end)];
0157 n = n + 1;
0158 continue;
0159 end
0160 end
0161
0162 frewind(fid);
0163 fprintf('done\n');
0164
0165
0166 fprintf('...searching for electrodes...');
0167
0168 ok = 1;
0169 while ok,
0170 tmp = fgetl(fid);
0171 if tmp < 0, break; end
0172
0173 if strfind(lower(tmp),'nasion'), continue; end
0174 if strfind(lower(tmp),'left'), continue; end
0175 if strfind(lower(tmp),'right'), continue; end
0176 if strfind(lower(tmp),'centroid'), continue; end
0177 if strfind(lower(tmp),'ref'), continue; end
0178
0179 tmp = sscanf(tmp,'%s %d %f %f %f');
0180
0181 if tmp(end-3) == 69,
0182 scan3dd.label{end+1} = char(tmp(1:end-4))';
0183 scan3dd.x(end+1,1) = tmp(end-2);
0184 scan3dd.y(end+1,1) = tmp(end-1);
0185 scan3dd.z(end+1,1) = tmp(end);
0186 continue;
0187 end
0188 if strfind(char(tmp(1:end-4))','32'),
0189 break;
0190
0191 scan3dd.hsp(end+1,:) = [tmp(end-2),tmp(end-1),tmp(end)];
0192 continue;
0193 end
0194 end
0195
0196
0197 frewind(fid);
0198 fprintf('done\n');
0199
0200
0201
0202 fprintf('...searching for head shape points...');
0203
0204 ok = 1;
0205 while ok,
0206 tmp = fgetl(fid);
0207 if tmp < 0, break; end
0208
0209 if strfind(lower(tmp),'nasion'), continue; end
0210 if strfind(lower(tmp),'left'), continue; end
0211 if strfind(lower(tmp),'right'), continue; end
0212 if strfind(lower(tmp),'centroid'), continue; end
0213 if strfind(lower(tmp),'ref'), continue; end
0214 if strfind(lower(tmp),'69'), continue; end
0215
0216 tmp = sscanf(tmp,'%d %f %f %f');
0217
0218 if tmp(end-3) == 32,
0219
0220 scan3dd.hsp(end+1,:) = [tmp(end-2),tmp(end-1),tmp(end)];
0221 continue;
0222 end
0223 end
0224
0225 frewind(fid);
0226 fprintf('done\n');
0227
0228 fclose(fid);
0229
0230
0231 return