Home > vbmeg > demo > test_scripts > sbi > meg_hread.m

meg_hread

PURPOSE ^

Retrive *.hd file contents

SYNOPSIS ^

function varargout = meg_hread(varargin)

DESCRIPTION ^

 Retrive *.hd file contents


 Usage example
   [fname,pname]=uigetfile('*.hd','Select Header File');
   fid=fopen([pname fname],'r','l');
   H_file=meg_hread('file',fid);
   .....
   fclose(fid);



%% Test function : show content overview
 FORMAT meg_hread

%% Applicable Functions
 FORMAT chname=meg_hread('meg_ch_name'); % call GUI for selecting a file
 FORMAT chname=meg_hread('meg_ch_name','abcd.hd');


%% Fundamental Functions
 FORMAT   meg_hread();     TEST
<共通ヘッダー>
1        struct   Head_file         [ファイル情報]
 FORMAT   H_file=meg_hread('file',fid);
2        struct   Head_id           [ID情報]
 FORMAT   H_id=meg_hread('id',fid,H_file.i_file_size);
3        struct   Head_exam         [検査情報]
 FORMAT   H_exam=meg_hread('exam',fid,H_file.i_exam_begin);
4        struct   Head_relat        [関連情報]
 FORMAT   H_relat=meg_hread('relat',fid,H_file.i_relat_begin);
5        struct   Head_disp         [表示情報]
 FORMAT   H_disp=meg_hread('disp',fid,H_file.i_disp_begin);
6        struct   Head_meg          [MEG収集情報]
 FORMAT   H_meg=meg_hread('meg',fid,H_file.i_meg_begin);
7       struct   Head_eeg           [生体電位収集情報]
 FORMAT   H_eeg=meg_hread('eeg',fid,H_file.i_eeg_begin);
8       struct   Head_pos           [ポジショニング収集情報]
 FORMAT   H_pos=meg_hread('pos',fid,H_file.i_pos_begin);
9       struct   Head_etc           [刺激収集情報]
 FORMAT   H_etc=meg_hread('etc',fid,H_file.i_etc_begin);
10       struct   Head_mark         [MEGイベントマーク情報]
 FORMAT   H_mark=meg_hread('mark',fid,H_file.i_mark_begin);
11       struct   Head_mri          [MRI画像情報]
 FORMAT   H_mri=meg_hread('mri',fid,H_file.i_mri_begin);
12       struct   Head_lcz          [電源推定情報]
 FORMAT   H_lcz=meg_hread('lcz',fid,H_file.i_lcz_begin);
<個別ヘッダー>
13       struct   Head_meg_ch       [MEGチャンネル別情報]
 FORMAT   H_meg_ch=meg_hread('meg_ch',fid,H_file.i_meg_ch_begin);
14       struct   Head_eeg_ch       [生体電位チャンネル別情報]
 FORMAT   H_eeg_ch=meg_hread('eeg_ch',fid,H_file.i_eeg_ch_begin);
15       struct   Head_pos_coil     [ポジショニングコイル別情報]
 FORMAT   H_pos_coil=meg_hread('pos_coil',fid,H_file.i_pos_coil_begin);
16       struct   Head_pos_rept     [ポジショニング測定繰り返し別情報]
 FORMAT   H_pos_rept=meg_hread('pos_rept',fid,H_file.i_pos_rept_begin);
17       struct   Head_etc_ch       [刺激チャンネル別情報]
 FORMAT     H_etc_ch=meg_hread('etc_ch',fid,H_file.i_etc_ch_begin+H_file.i_etc_ch_size*(i-1));
for i=1:H_etc.i_nch
   H_etc_ch=meg_hread('etc_ch',fid,H_file.i_etc_ch_begin+H_file.i_etc_ch_size*(i-1));
end
18       struct   Head_mark_each    [MEGイベントマーク別情報]
 FORMAT   H_mark_each=meg_hread('mark_each',fid,H_file.i_mark_each_begin);
19       struct   Head_mri_each     [MR画像別情報]
 FORMAT   H_mri_each=meg_hread('mri_each',fid,H_file.i_mri_each_begin);
20       struct   Head_lcz_each     [電源別推定情報]
 FORMAT   H_lcz_each=meg_hread('lcz_each',fid,H_file.i_lcz_each_begin);
21       struct   Head_div          [振り分け情報]
 FORMAT   H_div=meg_hread('div',fid,H_file.i_div_begin);
22       struct   Head_div_each     [振り分け別情報]
 FORMAT     H_div_each=meg_hread('div_each',fid,H_file.i_div_ch_begin+H_file.i_div_ch_size*(i-1));
for i=1:H_div.i_ndiv
   H_div_each=meg_hread('div_each',fid,H_file.i_div_ch_begin+H_file.i_div_ch_size*(i-1));
end


 Copyright (C) 2011, ATR All Rights Reserved.
 License : New BSD License(see VBMEG_LICENSE.txt)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 function varargout = meg_hread(varargin)
0002 % Retrive *.hd file contents
0003 %
0004 %
0005 % Usage example
0006 %   [fname,pname]=uigetfile('*.hd','Select Header File');
0007 %   fid=fopen([pname fname],'r','l');
0008 %   H_file=meg_hread('file',fid);
0009 %   .....
0010 %   fclose(fid);
0011 %
0012 %
0013 %
0014 %%% Test function : show content overview
0015 % FORMAT meg_hread
0016 %
0017 %%% Applicable Functions
0018 % FORMAT chname=meg_hread('meg_ch_name'); % call GUI for selecting a file
0019 % FORMAT chname=meg_hread('meg_ch_name','abcd.hd');
0020 %
0021 %
0022 %%% Fundamental Functions
0023 % FORMAT   meg_hread();     TEST
0024 %<共通ヘッダー>
0025 %1        struct   Head_file         [ファイル情報]
0026 % FORMAT   H_file=meg_hread('file',fid);
0027 %2        struct   Head_id           [ID情報]
0028 % FORMAT   H_id=meg_hread('id',fid,H_file.i_file_size);
0029 %3        struct   Head_exam         [検査情報]
0030 % FORMAT   H_exam=meg_hread('exam',fid,H_file.i_exam_begin);
0031 %4        struct   Head_relat        [関連情報]
0032 % FORMAT   H_relat=meg_hread('relat',fid,H_file.i_relat_begin);
0033 %5        struct   Head_disp         [表示情報]
0034 % FORMAT   H_disp=meg_hread('disp',fid,H_file.i_disp_begin);
0035 %6        struct   Head_meg          [MEG収集情報]
0036 % FORMAT   H_meg=meg_hread('meg',fid,H_file.i_meg_begin);
0037 %7       struct   Head_eeg           [生体電位収集情報]
0038 % FORMAT   H_eeg=meg_hread('eeg',fid,H_file.i_eeg_begin);
0039 %8       struct   Head_pos           [ポジショニング収集情報]
0040 % FORMAT   H_pos=meg_hread('pos',fid,H_file.i_pos_begin);
0041 %9       struct   Head_etc           [刺激収集情報]
0042 % FORMAT   H_etc=meg_hread('etc',fid,H_file.i_etc_begin);
0043 %10       struct   Head_mark         [MEGイベントマーク情報]
0044 % FORMAT   H_mark=meg_hread('mark',fid,H_file.i_mark_begin);
0045 %11       struct   Head_mri          [MRI画像情報]
0046 % FORMAT   H_mri=meg_hread('mri',fid,H_file.i_mri_begin);
0047 %12       struct   Head_lcz          [電源推定情報]
0048 % FORMAT   H_lcz=meg_hread('lcz',fid,H_file.i_lcz_begin);
0049 %<個別ヘッダー>
0050 %13       struct   Head_meg_ch       [MEGチャンネル別情報]
0051 % FORMAT   H_meg_ch=meg_hread('meg_ch',fid,H_file.i_meg_ch_begin);
0052 %14       struct   Head_eeg_ch       [生体電位チャンネル別情報]
0053 % FORMAT   H_eeg_ch=meg_hread('eeg_ch',fid,H_file.i_eeg_ch_begin);
0054 %15       struct   Head_pos_coil     [ポジショニングコイル別情報]
0055 % FORMAT   H_pos_coil=meg_hread('pos_coil',fid,H_file.i_pos_coil_begin);
0056 %16       struct   Head_pos_rept     [ポジショニング測定繰り返し別情報]
0057 % FORMAT   H_pos_rept=meg_hread('pos_rept',fid,H_file.i_pos_rept_begin);
0058 %17       struct   Head_etc_ch       [刺激チャンネル別情報]
0059 % FORMAT     H_etc_ch=meg_hread('etc_ch',fid,H_file.i_etc_ch_begin+H_file.i_etc_ch_size*(i-1));
0060 %for i=1:H_etc.i_nch
0061 %   H_etc_ch=meg_hread('etc_ch',fid,H_file.i_etc_ch_begin+H_file.i_etc_ch_size*(i-1));
0062 %end
0063 %18       struct   Head_mark_each    [MEGイベントマーク別情報]
0064 % FORMAT   H_mark_each=meg_hread('mark_each',fid,H_file.i_mark_each_begin);
0065 %19       struct   Head_mri_each     [MR画像別情報]
0066 % FORMAT   H_mri_each=meg_hread('mri_each',fid,H_file.i_mri_each_begin);
0067 %20       struct   Head_lcz_each     [電源別推定情報]
0068 % FORMAT   H_lcz_each=meg_hread('lcz_each',fid,H_file.i_lcz_each_begin);
0069 %21       struct   Head_div          [振り分け情報]
0070 % FORMAT   H_div=meg_hread('div',fid,H_file.i_div_begin);
0071 %22       struct   Head_div_each     [振り分け別情報]
0072 % FORMAT     H_div_each=meg_hread('div_each',fid,H_file.i_div_ch_begin+H_file.i_div_ch_size*(i-1));
0073 %for i=1:H_div.i_ndiv
0074 %   H_div_each=meg_hread('div_each',fid,H_file.i_div_ch_begin+H_file.i_div_ch_size*(i-1));
0075 %end
0076 %
0077 %
0078 % Copyright (C) 2011, ATR All Rights Reserved.
0079 % License : New BSD License(see VBMEG_LICENSE.txt)
0080 
0081 %% functions for accessing from outside
0082 
0083 %% functions for internal use
0084 
0085 if nargin<1 | isempty(varargin{1}),
0086 
0087 [fname,pname]=uigetfile('*.hd','Select Header File');
0088 %fname='1001651.hd';
0089 %pname='C:\work\MEG010711\1001651\'
0090 
0091 %fid=fopen([pname fname],'r','l');
0092 % rhayashi added encoding
0093 fid = -1;
0094 if vb_matlab_version('>=', '7.2')
0095     fid=fopen([pname fname],'r','a', 'US-ASCII');
0096 else
0097     fid=fopen([pname fname],'r','a');
0098 end
0099 
0100 
0101 %<共通ヘッダー>
0102 %1        struct   Head_file         [ファイル情報]
0103 H_file=meg_hread('file',fid);
0104 H_file
0105 %2        struct   Head_id           [ID情報]
0106 H_id=meg_hread('id',fid,H_file.i_file_size);
0107 if ~isempty(H_id),
0108   H_id
0109 end
0110 %3        struct   Head_exam         [検査情報]
0111 H_exam=meg_hread('exam',fid,H_file.i_exam_begin);
0112 if ~isempty(H_exam),
0113   H_exam
0114 end
0115 %4        struct   Head_relat        [関連情報]
0116 H_relat=meg_hread('relat',fid,H_file.i_relat_begin);
0117 if ~isempty(H_relat),
0118   H_relat
0119 end
0120 %5        struct   Head_disp         [表示情報]
0121 H_disp=meg_hread('disp',fid,H_file.i_disp_begin);
0122 if ~isempty(H_disp),
0123   H_disp
0124 end
0125 %6        struct   Head_meg          [MEG収集情報]
0126 H_meg=meg_hread('meg',fid,H_file.i_meg_begin);
0127 if ~isempty(H_meg),
0128   H_meg
0129 end
0130 pause
0131 %7       struct   Head_eeg           [生体電位収集情報]
0132 H_eeg=meg_hread('eeg',fid,H_file.i_eeg_begin);
0133 if ~isempty(H_eeg),
0134   H_eeg
0135 end
0136 %8       struct   Head_pos           [ポジショニング収集情報]
0137 H_pos=meg_hread('pos',fid,H_file.i_pos_begin);
0138 if ~isempty(H_pos),
0139   H_pos
0140 end
0141 %9       struct   Head_etc           [刺激収集情報]
0142 H_etc=meg_hread('etc',fid,H_file.i_etc_begin);
0143 if ~isempty(H_etc),
0144   H_etc
0145 end
0146 %10       struct   Head_mark         [MEGイベントマーク情報]
0147 H_mark=meg_hread('mark',fid,H_file.i_mark_begin);
0148 if ~isempty(H_mark),
0149   H_mark
0150 end
0151 %11       struct   Head_mri          [MRI画像情報]
0152 H_mri=meg_hread('mri',fid,H_file.i_mri_begin);
0153 if ~isempty(H_mri),
0154   H_mri
0155   %for i=1:5,
0156   %  H_mri.c_sysid{i}
0157   %end
0158 end
0159 %12       struct   Head_lcz          [電源推定情報]
0160 H_lcz=meg_hread('lcz',fid,H_file.i_lcz_begin);
0161 if ~isempty(H_lcz),
0162   H_lcz
0163 end
0164 %<個別ヘッダー>
0165 %13       struct   Head_meg_ch       [MEGチャンネル別情報]
0166 H_meg_ch=meg_hread('meg_ch',fid,H_file.i_meg_ch_begin);
0167 if ~isempty(H_meg_ch),
0168   H_meg_ch
0169 end
0170 %14       struct   Head_eeg_ch       [生体電位チャンネル別情報]
0171 H_eeg_ch=meg_hread('eeg_ch',fid,H_file.i_eeg_ch_begin);
0172 if ~isempty(H_eeg_ch),
0173   H_eeg_ch
0174 end
0175 %15       struct   Head_pos_coil     [ポジショニングコイル別情報]
0176 H_pos_coil=meg_hread('pos_coil',fid,H_file.i_pos_coil_begin);
0177 if ~isempty(H_pos_coil),
0178   H_pos_coil
0179 end
0180 %16       struct   Head_pos_rept     [ポジショニング測定繰り返し別情報]
0181 H_pos_rept=meg_hread('pos_rept',fid,H_file.i_pos_rept_begin);
0182 if ~isempty(H_pos_rept),
0183   H_pos_rept
0184 end
0185 %17       struct   Head_etc_ch       [刺激チャンネル別情報]
0186 for i=1:H_etc.i_nch
0187   str=sprintf('%d/%d',i,H_etc.i_nch);
0188   disp(str);
0189   H_etc_ch=meg_hread('etc_ch',fid,H_file.i_etc_ch_begin+H_file.i_etc_ch_size*(i-1));
0190   if ~isempty(H_etc_ch),
0191     H_etc_ch
0192   end
0193   pause
0194 end
0195 %18       struct   Head_mark_each    [MEGイベントマーク別情報]
0196 H_mark_each=meg_hread('mark_each',fid,H_file.i_mark_each_begin);
0197 if ~isempty(H_mark_each),
0198   H_mark_each
0199 end
0200 %19       struct   Head_mri_each     [MR画像別情報]
0201 H_mri_each=meg_hread('mri_each',fid,H_file.i_mri_each_begin);
0202 if ~isempty(H_mri_each),
0203   H_mri_each
0204 end
0205 %20       struct   Head_lcz_each     [電源別推定情報]
0206 H_lcz_each=meg_hread('lcz_each',fid,H_file.i_lcz_each_begin);
0207 if ~isempty(H_lcz_each),
0208   H_lcz_each
0209 end
0210 %21       struct   Head_div          [振り分け情報]
0211 H_div=meg_hread('div',fid,H_file.i_div_begin);
0212 if ~isempty(H_div),
0213   H_div
0214 end
0215 %22       struct   Head_div_each     [振り分け別情報]
0216 for i=1:H_div.i_ndiv
0217   str=sprintf('%d/%d',i,H_div.i_ndiv);
0218   disp(str);
0219   H_div_each=meg_hread('div_each',fid,H_file.i_div_ch_begin+H_file.i_div_ch_size*(i-1));
0220   if ~isempty(H_div_each),
0221       H_div_each
0222   end
0223 end
0224 
0225 fclose(fid)
0226 return
0227 end
0228 
0229 
0230 switch varargin{1}
0231 
0232 case {'meg_ch_name', 'meg_ch_gain', 'meg_ch_TV', 'meg_ch_lock', 'meg_ch_del'}
0233 %=======================================================================================================================
0234 if nargin ~=2
0235   [fname_h,pname_h]=uigetfile('*.hd','Select Header File');
0236   fn_h=[pname_h fname_h];
0237 else
0238   fn_h=varargin{2};
0239 end
0240   fid=fopen(fn_h,'r','l');
0241   if fid==-1, disp('Cannot open the file');varargout={[]}; end; 
0242   H_file=meg_hread('file',fid);
0243   H_meg=meg_hread('meg',fid,H_file.i_meg_begin);
0244 
0245   if ~isempty(H_meg),
0246     nch=H_meg.i_nch;
0247     for i=1:nch,
0248        H_meg_ch=meg_hread('meg_ch',fid,H_file.i_meg_ch_begin+H_file.i_meg_ch_size*(i-1));
0249        switch varargin{1}
0250           case {'meg_ch_name'}
0251              ss{i}=H_meg_ch.c_ch_name;
0252           case {'meg_ch_gain'}
0253              ss{i}=H_meg_ch.f_amp_gain;
0254           case {'meg_ch_TV'}
0255              ss{i}=H_meg_ch.f_phy_v_coef;
0256           case {'meg_ch_lock'}
0257              ss{i}=H_meg_ch.i_meg_lock;
0258           case {'meg_ch_del'}
0259              ss{i}=H_meg_ch.i_meg_del;
0260       end
0261     end
0262   else
0263     chnm={''};
0264   end
0265   fclose(fid);
0266 varargout={ss};
0267 
0268 
0269 %
0270 % Fundamental Functions
0271 %
0272 case {'file'}
0273 %=======================================================================================================================
0274 if isempty(varargin{1}) | isempty(varargin{2})
0275    varargout={[]};
0276    return;
0277 end
0278 fid=varargin{2};
0279 %<共通ヘッダー>
0280 %1        struct   Head_file         [ファイル情報]
0281 %function Head_file=h_file(fid);
0282 fseek(fid,0,'bof');
0283 Head_file.c_rev             = mysetstr(fread(fid,8,'char'))';   %ヘッダーレビジョン
0284 Head_file.i_file_size       = fread(fid,1,'int32');      %ファイル情報ヘッダーのバイト数
0285 Head_file.i_id_size         = fread(fid,1,'int32');      %ID情報ヘッダーのバイト数
0286 Head_file.i_exam_begin      = fread(fid,1,'int32');      %検査情報ヘッダーの先頭アドレス[Byte]
0287 Head_file.i_exam_size       = fread(fid,1,'int32');      %検査情報ヘッダーのバイト数
0288 Head_file.i_relat_begin     = fread(fid,1,'int32');      %関連情報ヘッダーの先頭アドレス[Byte]  (*1,2)
0289 Head_file.i_relat_size      = fread(fid,1,'int32');      %関連情報ヘッダーのバイト数
0290 Head_file.i_disp_begin      = fread(fid,1,'int32');      %表示情報ヘッダーの先頭アドレス[Byte]  (*1,2)
0291 Head_file.i_disp_size       = fread(fid,1,'int32');      %表示情報ヘッダーのバイト数
0292 Head_file.i_meg_begin       = fread(fid,1,'int32');      %MEG収集情報ヘッダーの先頭アドレス[Byte]  (*1,2)
0293 Head_file.i_meg_size        = fread(fid,1,'int32');      %MEG収集情報ヘッダーのバイト数
0294 
0295 Head_file.i_eeg_begin       = fread(fid,1,'int32');      %生体電位収集情報ヘッダーの先頭アドレス[Byte]  (*1,2)
0296 Head_file.i_eeg_size        = fread(fid,1,'int32');      %生体電位収集情報ヘッダーのバイト数
0297 Head_file.i_pos_begin       = fread(fid,1,'int32');      %ポジショニング収集情報ヘッダーの先頭アドレス[Byte]  (*1,2)
0298 Head_file.i_pos_size        = fread(fid,1,'int32');      %ポジショニング収集情報ヘッダーのバイト数
0299 Head_file.i_etc_begin       = fread(fid,1,'int32');      %刺激収集情報ヘッダーの先頭アドレス[Byte]  (*1,2)
0300 Head_file.i_etc_size        = fread(fid,1,'int32');      %刺激収集情報ヘッダーのバイト数
0301 
0302 Head_file.i_mark_begin      = fread(fid,1,'int32');      %MEGマーク情報ヘッダーの先頭アドレス[Byte]  (*1,2)
0303 Head_file.i_mark_size       = fread(fid,1,'int32');      %MEGマーク情報ヘッダーのバイト数
0304 Head_file.i_lcz_begin       = fread(fid,1,'int32');      %電源推定情報ヘッダーの先頭アドレス[Byte]  (*1,2)
0305 Head_file.i_lcz_size        = fread(fid,1,'int32');      %電源推定情報ヘッダーのバイト数
0306 
0307 Head_file.i_mri_begin       = fread(fid,1,'int32');      %MRI画像情報ヘッダーの先頭アドレス[Byte]  (*1,2)
0308 Head_file.i_mri_size        = fread(fid,1,'int32');      %MRI画像情報ヘッダーのバイト数
0309 Head_file.i_meg_ch_begin    = fread(fid,1,'int32');      %MEGチャンネル別情報ヘッダーの先頭アドレス[Byte]  (*1,2)
0310 Head_file.i_meg_ch_size     = fread(fid,1,'int32');      %MEGチャンネル別情報ヘッダーのバイト数
0311 Head_file.i_eeg_ch_begin    = fread(fid,1,'int32');      %生体電位チャンネル別情報ヘッダーの先頭アドレス[Byte]  (*1,2)
0312 Head_file.i_eeg_ch_size     = fread(fid,1,'int32');      %生体電位チャンネル別情報ヘッダーのバイト数
0313 Head_file.i_pos_coil_begin  = fread(fid,1,'int32');      %ポジショニングコイル別情報ヘッダーの先頭アドレス[Byte]  (*1,2)
0314 Head_file.i_pos_coil_size   = fread(fid,1,'int32');      %ポジショニングコイル別情報ヘッダーのバイト数
0315 Head_file.i_pos_rept_begin  = fread(fid,1,'int32');      %ポジショニング測定繰り返し別情報ヘッダーの先頭アドレス[Byte]  (*1,2)
0316 Head_file.i_pos_rept_size   = fread(fid,1,'int32');      %ポジショニング測定繰り返し別情報ヘッダーのバイト数
0317 Head_file.i_etc_ch_begin    = fread(fid,1,'int32');      %刺激チャンネル別情報ヘッダーの先頭アドレス[Byte]  (*1,2)
0318 Head_file.i_etc_ch_size     = fread(fid,1,'int32');      %刺激チャンネル別情報ヘッダーのバイト数
0319 Head_file.i_mark_each_begin = fread(fid,1,'int32');      %MEGマーク別情報ヘッダーの先頭アドレス[Byte]  (*1,2)
0320 Head_file.i_mark_each_size  = fread(fid,1,'int32');      %MEGマーク別情報ヘッダーのバイト数
0321 Head_file.i_lcz_each_begin  = fread(fid,1,'int32');      %電源別推定情報ヘッダーの先頭アドレス[Byte]  (*1,2)
0322 Head_file.i_lcz_each_size   = fread(fid,1,'int32');      %電源別推定情報ヘッダーのバイト数
0323 Head_file.i_mri_each_begin  = fread(fid,1,'int32');      %MRI画像別情報ヘッダーの先頭アドレス[Byte]  (*1,2)
0324 Head_file.i_mri_each_size   = fread(fid,1,'int32');      %MRI画像別情報ヘッダーのバイト数
0325 Head_file.c_meg_sysid       = mysetstr(fread(fid,8,'char'))';   %MEGファイルシステムID
0326 Head_file.c_root_meg_sysid  = mysetstr(fread(fid,8,'char'))';   %大元のMEGファイルシステムID  (*2)
0327 Head_file.c_old_meg_sysid   = mysetstr(fread(fid,128,'char'))'; %元のMEGシステムID
0328 Head_file.i_div_begin       = fread(fid,1,'int32');      %振り分け情報ヘッダーの先頭アドレス[Byte](*1,2)
0329 Head_file.i_div_size        = fread(fid,1,'int32');      %振り分け情報ヘッダーのバイト数
0330 
0331 Head_file.i_div_ch_begin    = fread(fid,1,'int32');      %振り分け別情報ヘッダーの先頭アドレス[Byte](*1,2)
0332 Head_file.i_div_ch_size     = fread(fid,1,'int32');      %振り分け別情報ヘッダーのバイト数
0333 
0334 varargout={Head_file};
0335 
0336 case {'id'}
0337 %=======================================================================================================================
0338 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0339    varargout={[]};
0340    return;
0341 end
0342 fid=varargin{2};
0343 offset=varargin{3};
0344 if offset<=0,varargout={[]};return,end;
0345 %2        struct   Head_id           [ID情報]
0346 %function [Head_id,error]=h_id(fid,offset)
0347 fseek(fid,offset,'bof');
0348 Head_id.c_date            = mysetstr(fread(fid,12,'char'))';  %検査日  (ex.)1995.05.21
0349 Head_id.c_time            = mysetstr(fread(fid,10,'char'))';  %検査時刻  (ex.)11:22:31
0350 Head_id.c_type            = mysetstr(fread(fid,64,'char'))';  %データタイプ  (ex.)ADED
0351                            %  A:加算平均,D:ディジタルフィルタ,E:波形編集,C:ファイルコンペア
0352 Head_id.c_history         = mysetstr(fread(fid,1024,'char'))'; % データ処理の履歴
0353                            %  (ex.)Average -50〜0ms.offset,5Vcut
0354                            %       DegitalFilter 100HzLowPass,128order,Kaiser
0355                            %       WaveEdit 32-A,41-C,43-BDelete
0356                            %       DegitalFilter 50HzLowPass,128order,Kaiser
0357 Head_id.c_hospital        = mysetstr(fread(fid,18,'char'))';  %病院名
0358 Head_id.c_docter          = mysetstr(fread(fid,16,'char'))';  %担当医師名
0359 Head_id.c_operator        = mysetstr(fread(fid,16,'char'))';  %担当技師名
0360 Head_id.i_procedure       = fread(fid,1,'int32');      %検査プロシジャーID
0361 Head_id.c_proc_name       = mysetstr(fread(fid,32,'char'))';  %検査プロシジャー名
0362 Head_id.i_protocol        = fread(fid,1,'int32');      %検査プロトコル番号
0363 Head_id.c_prot_name       = mysetstr(fread(fid,32,'char'))';  %検査プロトコル名
0364 Head_id.c_prot_tyep       = mysetstr(fread(fid,32,'char'))';  %検査プロトコルタイプ
0365 
0366 varargout={Head_id};
0367 
0368 case {'exam'}
0369 %=======================================================================================================================
0370 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0371    varargout={};
0372    return;
0373 end
0374 fid=varargin{2};
0375 offset=varargin{3};
0376 if offset<=0,varargout={[]};return,end;
0377 %3        struct   Head_exam         [検査情報]
0378 fseek(fid,offset,'bof');
0379 Head_exam.c_patient         = mysetstr(fread(fid,16,'char'))';  %被検者名
0380 Head_exam.c_id              = mysetstr(fread(fid,12,'char'))';  %被検者ID
0381 Head_exam.c_birth           = mysetstr(fread(fid,12,'char'))';  %生年月日  (ex.)1963.06.08
0382 Head_exam.c_sex             = mysetstr(fread(fid,2,'char'))';   %性別  (ex.)M
0383 Head_exam.c_age             = mysetstr(fread(fid,16,'char'))';  %年齢  (ex.)29Y10M2W2D
0384 Head_exam.c_comment         = mysetstr(fread(fid,512,'char'))'; %被検者に関するコメント
0385 Head_exam.c_comment2        = mysetstr(fread(fid,64,'char'))';  %被検者に関するコメント2
0386 Head_exam.c_comment3        = mysetstr(fread(fid,64,'char'))';  %被検者に関するコメント3
0387 
0388 varargout={Head_exam};
0389 
0390 case {'relat'}
0391 %=======================================================================================================================
0392 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0393    varargout={};
0394    return;
0395 end
0396 fid=varargin{2};
0397 offset=varargin{3};
0398 if offset<=0,varargout={[]};return,end;
0399 %4        struct   Head_relat        [関連情報]
0400 fseek(fid,offset,'bof');
0401 Head_relat.c_part            = mysetstr(fread(fid,10,'char'))';  %測定部位     BRAIN:頭部  HEART:心臓  OTHERS:その他
0402 Head_relat.c_region          = mysetstr(fread(fid,10,'char'))';  %関心部位  (ex.)LH
0403                            %          (*3)L=左,R=右,S=上,I=下,A=前部,P=後部。斜めを示すため、3文字までの組合せで用いても良い
0404 Head_relat.c_object          = mysetstr(fread(fid,10,'char'))';  %測定対象
0405                            %         AEF:聴覚誘発  VEF:視覚誘発
0406                            %         SEF:体性感覚誘発  EP:てんかん
0407                            %         SP:自発  OTHERS:その他
0408 Head_relat.c_comment         = mysetstr(fread(fid,512,'char'))'; %測定方法に関するコメント
0409 Head_relat.c_comment2        = mysetstr(fread(fid,64,'char'))';  %測定方法に関するコメント2
0410 Head_relat.c_comment3        = mysetstr(fread(fid,64,'char'))';  %測定方法に関するコメント3
0411 Head_relat.c_comment4        = mysetstr(fread(fid,64,'char'))';  %測定方法に関するコメント4
0412 Head_relat.c_comment5        = mysetstr(fread(fid,64,'char'))';  %測定方法に関するコメント5
0413 
0414 varargout={Head_relat};
0415 
0416 case {'disp'}
0417 %=======================================================================================================================
0418 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0419    varargout={};
0420    return;
0421 end
0422 fid=varargin{2};
0423 offset=varargin{3};
0424 if offset<=0,varargout={[]};return,end;
0425 %5        struct   Head_disp         [表示情報]
0426 fseek(fid,offset,'bof');
0427 Head_disp.c_orient_x        = mysetstr(fread(fid,4,'char'))';   %イメージの横第1列に当たる被験者の向き  (ex.)L  (*3)
0428 Head_disp.c_orient_y        = mysetstr(fread(fid,4,'char'))';   %イメージの縦第1行に当たる被験者の向き  (ex.)H  (*3)
0429 Head_disp.i_mode            = fread(fid,1,'int32');      %磁場測定モード    0:ベクトル  1:Radial
0430 Head_disp.i_meg_max         = fread(fid,1,'int32');      %MEG全測定値の中の最大値[dig.]
0431 Head_disp.i_meg_min         = fread(fid,1,'int32');      %MEG全測定値の中の最小値[dig.]
0432 Head_disp.i_eeg_max         = fread(fid,1,'int32');      %生体電位全測定値の中の最大値[dig.]
0433 Head_disp.i_eeg_min         = fread(fid,1,'int32');      %生体電位全測定値の中の最小値[dig.]
0434 
0435 varargout={Head_disp};
0436 
0437 case {'meg'}
0438 %=======================================================================================================================
0439 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0440    varargout={};
0441    return;
0442 end
0443 fid=varargin{2};
0444 offset=varargin{3};
0445 if offset<=0,varargout={[]};return,end;
0446 %6        struct   Head_meg          [MEG収集情報]
0447 fseek(fid,offset,'bof');
0448 Head_meg.c_model           = mysetstr(fread(fid,20,'char'))';  %MEG装置モデル名  (ex.)SMT-100X
0449 Head_meg.c_serial_id       = mysetstr(fread(fid,20,'char'))';  %MEG装置シリアルID  (ex.)N100-123-5001
0450 Head_meg.c_sw_rev          = mysetstr(fread(fid,8,'char'))';  %MEGシステムSWバージョン
0451 Head_meg.i_nch             = fread(fid,1,'int32');      %MEGチャンネル数
0452 Head_meg.i_nrept           = fread(fid,1,'int32');      %測定繰り返し数
0453 Head_meg.i_nwave           = fread(fid,1,'int32');      %繰り返し数
0454 Head_meg.i_nave            = fread(fid,1,'int32');      %加算平均回数
0455 Head_meg.c_ave_mode        = mysetstr(fread(fid,20,'char'))';  %加算平均モード  none, all, even-odd, befor-after
0456 Head_meg.i_offset_start    = fread(fid,1,'int32');      %基線補正に使う区間のスタート潜時[サンプル点番号]
0457 Head_meg.i_offset_end      = fread(fid,1,'int32');      %基線補正に使う区間のエンド潜時[サンプル点番号]
0458 Head_meg.f_lev_reject      = fread(fid,1,'float');    %LevelRejectの値[T](廃止)
0459 Head_meg.i_nsample         = fread(fid,1,'int32');      %総サンプリング数
0460 Head_meg.i_nprsample       = fread(fid,1,'int32');      %プリトリガサンプル数
0461 Head_meg.i_samp_freq       = fread(fid,1,'int32');      %サンプリング周波数[Hz]
0462 Head_meg.f_ad_weight       = fread(fid,1,'float');    %AD変換器1bitの重み[V/digit]
0463 Head_meg.i_block           = fread(fid,1,'int32');      %MEGデータ1ブロックのバイト数[Byte]
0464 Head_meg.i_flag_begin      = fread(fid,1,'int32');      %MEG収集フラグデータの先頭アドレス[Byte]  (*1)
0465 Head_meg.i_flag_size       = fread(fid,1,'int32');      %MEG収集フラグデータのバイト数
0466 
0467 Head_meg.i_bal_cancel      = fread(fid,1,'int32');      %コイルアンバランスの補正処理   0:なし  1:有り
0468 Head_meg.i_ns_reduse       = fread(fid,1,'int32');      %ノイズリダクション処理   0:なし  1:有り
0469 Head_meg.c_lev_rej_kind    = mysetstr(fread(fid,20,'char'))';  %LevelRejectの種類(廃止)   Plus, Minus, Peak_Peak
0470 Head_meg.c_offset_kind     = mysetstr(fread(fid,20,'char'))';  %基線補正の種類  Table,Pretrigger,Full-time,Part-time
0471 Head_meg.i_del_nch         = fread(fid,1,'int32');      %MEGチャンネル削除数
0472 Head_meg.i_acq_nsamp       = fread(fid,1,'int32');      %測定時の総サンプリング数
0473 Head_meg.i_acq_nprsamp     = fread(fid,1,'int32');      %測定時のプリトリガサンプル数
0474 
0475 Head_meg.c_acq_offset_mod  = mysetstr(fread(fid,20,'char'))';  %測定時の基線補正方法
0476 Head_meg.i_acq_offset_str  = fread(fid,1,'int32');      %測定時の基線補正基準のスタート潜時[サンプル点号]
0477 Head_meg.i_acq_offset_end  = fread(fid,1,'int32');      %測定時の基線補正基準のエンド潜時[サンプル点号]
0478 Head_meg.f_acq_lev_rej     = fread(fid,1,'float');    %測定時のLevelRejectの値[T]
0479 Head_meg.c_acq_ave_mode    = mysetstr(fread(fid,20,'char'))';  %測定時の加算平均モード
0480 Head_meg.f_lev_rej_p       = fread(fid,1,'float');    %LevelReject(+)の値[T]
0481 Head_meg.f_lev_rej_m       = fread(fid,1,'float');    %LevelReject(-)の値[T]
0482 Head_meg.f_lev_rej_pp      = fread(fid,1,'float');    %LevelReject(P-P)の値[T]
0483 Head_meg.c_station_id      = mysetstr(fread(fid,32,'char'))';  %MEG装置ステーションID
0484 Head_meg.i_lev_rej_p       = fread(fid,1,'int32');      %オフライン処理のLevelReject(+) (=1:ON)
0485 Head_meg.i_lev_rej_m       = fread(fid,1,'int32');      %オフライン処理のLevelReject(-) (=1:ON)
0486 Head_meg.i_lev_rej_pp      = fread(fid,1,'int32');      %オフライン処理のLevelReject(P-P) (=1:ON)
0487 Head_meg.i_acq_lev_rej_p   = fread(fid,1,'int32');      %計測時のLevelReject(+) (=1:ON)
0488 Head_meg.i_acq_lev_rej_m   = fread(fid,1,'int32');      %計測時のLevelReject(-) (=1:ON)
0489 Head_meg.i_acq_lev_rej_pp  = fread(fid,1,'int32');      %計測時のLevelReject(P-P) (=1:ON)
0490 Head_meg.f_acq_lev_rej_p   = fread(fid,1,'float');    %計測時のLevelReject(+)の値[T]
0491 Head_meg.f_acq_lev_rej_m   = fread(fid,1,'float');    %計測時のLevelReject(-)の値[T]
0492 Head_meg.f_acq_lev_rej_pp  = fread(fid,1,'float');    %計測時のLevelReject(P-P)の値[T]
0493 Head_meg.c_trg_mode        = mysetstr(fread(fid,64,'char'))';  %トリガモード (Internal/External1/External2/External3/External4)
0494 
0495 varargout={Head_meg};
0496 
0497 case {'eeg'}
0498 %=======================================================================================================================
0499 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0500    varargout={};
0501    return;
0502 end
0503 fid=varargin{2};
0504 offset=varargin{3};
0505 if offset<=0,varargout={[]};return,end;
0506 %7       struct   Head_eeg           [生体電位収集情報]
0507 fseek(fid,offset,'bof');
0508 Head_eeg.c_model           = mysetstr(fread(fid,20,'char'))';  %生体電位装置モデル名  (ex.)MME-3132
0509 Head_eeg.c_serial_id       = mysetstr(fread(fid,20,'char'))';  %生体電位装置シリアルID  (ex.)MA 1-11 1-09
0510 Head_eeg.c_sw_rev          = mysetstr(fread(fid,8,'char'))';   %生体電位システムSWバージョン
0511 
0512 Head_eeg.i_nch             = fread(fid,1,'int32');      %生体電位チャンネル数
0513 Head_eeg.i_nrept           = fread(fid,1,'int32');      %測定繰り返し数
0514 Head_eeg.i_nwave           = fread(fid,1,'int32');      %繰り返し数
0515 Head_eeg.i_nave            = fread(fid,1,'int32');      %加算平均回数
0516 Head_eeg.c_ave_mode        = mysetstr(fread(fid,20,'char'));  %加算平均モード   all, even-odd, befor-after
0517 Head_eeg.i_offset_start    = fread(fid,1,'int32');      %基線補正に使う区間のスタート潜時[サンプル点番号]
0518 Head_eeg.i_offset_end      = fread(fid,1,'int32');      %基線補正に使う区間のエンド潜時[サンプル点番号]
0519 Head_eeg.f_ave_cut         = fread(fid,1,'float');    %加算平均を行なう波形の電圧上限値[V]
0520 Head_eeg.i_nsample         = fread(fid,1,'int32');      %総サンプリング数
0521 Head_eeg.i_nprsample       = fread(fid,1,'int32');      %プリトリガサンプル数
0522 Head_eeg.i_samp_freq       = fread(fid,1,'int32');      %サンプリング周波数[Hz]
0523 Head_eeg.f_ad_weight       = fread(fid,1,'float');    %AD変換器1bitの重み[V/digit]
0524 Head_eeg.c_induct          = mysetstr(fread(fid,10,'char'));  %電極誘導法   monopolar:単極誘導,AV:AV誘導
0525                            %         BN:平衡型頭部外基準導出法,biopolar:双極誘導
0526 Head_eeg.c_base            = mysetstr(fread(fid,10,'char'));  %基準電極  OFF,A1->A2,A1<-A2,A1<->A2,A1+A2,VX,AV,BN
0527 Head_eeg.c_mode            = mysetstr(fread(fid,10,'char'));  %測定モード  I〜VIII A,I〜VIII B:プリセットモード
0528                            %         FREE A,FREE B:フリーモード
0529 Head_eeg.i_block           = fread(fid,1,'int32');      %EEGデータ1ブロックのバイト数
0530 Head_eeg.i_flag_begin      = fread(fid,1,'int32');      %EEG収集フラグデータの先頭アドレス[Byte]  (*1)
0531 Head_eeg.i_flag_size       = fread(fid,1,'int32');      %EEG収集フラグデータのバイト数
0532 
0533 Head_eeg.c_offset_kind     = mysetstr(fread(fid,20,'char'))';  %基線補正の種類   Table,Pretrigger,Full-time,Part-time
0534 Head_eeg.i_del_nch         = fread(fid,1,'int32');      %生体電位チャンネル削除数
0535 Head_eeg.i_org_nsamp       = fread(fid,1,'int32');      %測定時の総サンプリング数
0536 Head_eeg.i_org_nprsamp     = fread(fid,1,'int32');      %測定時のプリトリガサンプル数
0537 
0538 Head_eeg.c_acq_ave_mode    = mysetstr(fread(fid,20,'char'))';  %測定時の加算平均モード
0539 
0540 varargout={Head_eeg};
0541 
0542 case {'pos'}
0543 %=======================================================================================================================
0544 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0545    varargout={};
0546    return;
0547 end
0548 fid=varargin{2};
0549 offset=varargin{3};
0550 if offset<=0,varargout={[]};return,end;
0551 %8       struct   Head_pos           [ポジショニング収集情報]
0552 fseek(fid,offset,'bof');
0553 Head_pos.i_nch             = fread(fid,1,'int32');      %ポジショニングチャンネル数
0554 Head_pos.i_nrept           = fread(fid,1,'int32');      %測定回数
0555 Head_pos.i_ncoil           = fread(fid,1,'int32');      %ポジショニングコイル数
0556 Head_pos.i_nsample         = fread(fid,1,'int32');      %総サンプリング数
0557 Head_pos.i_samp_freq       = fread(fid,1,'int32');      %サンプリング周波数[Hz]
0558 Head_pos.f_ad_weight       = fread(fid,1,'float');      %AD変換器1bitの重み[V/digit]
0559 Head_pos.i_block           = fread(fid,1,'int32');      %Pos波形データ1ブロックのバイト数
0560 Head_pos.i_flag_begin      = fread(fid,1,'int32');      %Pos収集フラグデータの先頭アドレス[Byte]  (*1)
0561 Head_pos.i_flag_size       = fread(fid,1,'int32');      %Pos収集フラグデータのバイト数
0562 Head_pos.i_fft_begin       = fread(fid,1,'int32');      %PosFFTデータの先頭アドレス[Byte]  (*1)
0563 Head_pos.i_fft_block       = fread(fid,1,'int32');      %PosFFTデータ1ブロックのバイト数
0564 
0565 varargout={Head_pos};
0566 
0567 case {'etc'}
0568 %=======================================================================================================================
0569 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0570    varargout={};
0571    return;
0572 end
0573 fid=varargin{2};
0574 offset=varargin{3};
0575 if offset<=0,varargout={[]};return,end;
0576 %9       struct   Head_etc           [刺激収集情報]
0577 fseek(fid,offset,'bof');
0578 Head_etc.i_nch             = fread(fid,1,'int32');      %刺激チャンネル数
0579 Head_etc.i_flag_begin      = fread(fid,1,'int32');      %刺激収集フラグデータの先頭アドレス[Byte]  (*1)
0580 Head_etc.i_flag_size       = fread(fid,1,'int32');      %刺激収集フラグデータのバイト数
0581 Head_etc.i_del_nch         = fread(fid,1,'int32');      %刺激チャンネル削除数
0582 Head_etc.i_nsample         = fread(fid,1,'int32');      %総サンプリング数
0583 Head_etc.i_nprsample       = fread(fid,1,'int32');      %プリトリガサンプル数
0584 Head_etc.i_samp_freq       = fread(fid,1,'int32');      %サンプリング周波数[Hz]
0585 Head_etc.f_ad_weight       = fread(fid,1,'float');      %AD変換器1bitの重み[V/digit]
0586 Head_etc.i_org_nsamp       = fread(fid,1,'int32');      %測定時の総サンプリング数
0587 Head_etc.i_org_nprsamp     = fread(fid,1,'int32');      %測定時のプリトリガサンプル数
0588 
0589 Head_etc.c_acq_ave_mode    = mysetstr(fread(fid,20,'char'))';  %測定時の加算平均モード
0590 Head_etc.i_data_begin      = fread(fid,1,'int32');      %刺激収集データの先頭アドレス[Byte]  (*1)
0591 Head_etc.i_data_size       = fread(fid,1,'int32');      %刺激収集データのバイト数
0592 
0593 varargout={Head_etc};
0594 
0595 case {'mark'}
0596 %=======================================================================================================================
0597 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0598    varargout={};
0599    return;
0600 end
0601 fid=varargin{2};
0602 offset=varargin{3};
0603 if offset<=0,varargout={[]};return,end;
0604 %10       struct   Head_mark         [MEGイベントマーク情報]
0605 fseek(fid,offset,'bof');
0606 Head_mark.i_nmark           = fread(fid,1,'int32');      %MEGイベントマークの個数
0607 
0608 varargout={Head_mark};
0609 
0610 case {'mri'}
0611 %=======================================================================================================================
0612 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0613    varargout={};
0614    return;
0615 end
0616 fid=varargin{2};
0617 offset=varargin{3};
0618 if offset<=0,varargout={[]};return,end;
0619 %11       struct   Head_mri          [MRI画像情報]
0620 fseek(fid,offset,'bof');
0621 Head_mri.i_nfile           = fread(fid,1,'int32');      %MR画像ファイルの個数  (def.)0
0622 nmri=4;  % KAJI  5->nmri
0623 Head_mri.st_axes=zeros(nmri,3);
0624 for i=1:nmri
0625   Head_mri.st_axes(i,:)        = fread(fid,3,'float')';    %Vector   %頭部座標系指標点n位置XYZ[m]  MRI磁場座標系  n=0〜4
0626   %for j=1:3,Head_mri.st_axes(i,j),end
0627 end
0628 Head_mri.c_sysid=cell(nmri);
0629 for i=1:nmri
0630   Head_mri.c_sysid{i}        = mysetstr(fread(fid,8,'char'))';   %指標点nのMR画像ファイルシステムID  n=1〜4 (def.)0
0631 end
0632 Head_mri.c_format          = mysetstr(fread(fid,16,'char'))';  %MRI フォーマット ( DICOM or SMT )
0633 Head_mri.c_endian          = mysetstr(fread(fid,16,'char'))';  %Data Endian ( BIG or LITTLE )
0634 
0635 varargout={Head_mri};
0636 
0637 case {'lcz'}
0638 %=======================================================================================================================
0639 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0640    varargout={};
0641    return;
0642 end
0643 fid=varargin{2};
0644 offset=varargin{3};
0645 if offset<=0,varargout={[]};return,end;
0646 %12       struct   Head_lcz          [電源推定情報]
0647 fseek(fid,offset,'bof');
0648 Head_lcz.f_model_r         = fread(fid,1,'float');    %頭部球モデル半径Default値[m]  (def.)-1.0E0
0649 Head_lcz.st_model          = fread(fid,3,'float');    %Vector   %頭部球モデル中心XYZDefault値  頭部座標系[m]
0650 Head_lcz.i_latency         = fread(fid,1,'int32');      %推定潜時Default値[サンプル点番号] (未使用)
0651 Head_lcz.i_nrezult         = fread(fid,1,'int32');      %推定結果の数  (def.)0
0652 Head_lcz.c_outline         = mysetstr(fread(fid,20,'char'))';  %頭部輪郭抽出方法Default   Auto, Manual
0653 Head_lcz.c_weight          = mysetstr(fread(fid,20,'char'))';  %頭部球モデル作成の重みDefault  Normal, Light, Heavy, None
0654 Head_lcz.i_level           = fread(fid,1,'int32');      %輪郭抽出Level
0655 Head_lcz.i_width           = fread(fid,1,'int32');      %輪郭抽出Width
0656 Head_lcz.c_imagedir        = mysetstr(fread(fid,8,'char'))';   %輪郭抽出MRIの画像方向Default(TRN/SAG/COR)
0657 Head_lcz.st_sf_focus       = fread(fid,3,'float');    %Vector   %解析時のフォーカス位置Default
0658 
0659 varargout={Head_lcz};
0660 
0661 case {'meg_ch'}
0662 %=======================================================================================================================
0663 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0664    varargout={};
0665    return;
0666 end
0667 fid=varargin{2};
0668 offset=varargin{3};
0669 if offset<=0,varargout={[]};return,end;
0670 %<個別ヘッダー>
0671 %13       struct   Head_meg_ch       [MEGチャンネル別情報]
0672 fseek(fid,offset,'bof');
0673 Head_meg_ch.c_ch_name         = mysetstr(fread(fid,8,'char'))';   %チャンネル名
0674 Head_meg_ch.f_amp_gain        = fread(fid,1,'float');    %増幅器増幅度
0675 Head_meg_ch.f_fll_amp         = fread(fid,1,'float');    %FLL回路の増幅度
0676 Head_meg_ch.f_hpf_amp         = fread(fid,1,'float');    %ハイパスフィルタ増幅度
0677 Head_meg_ch.f_lpf_amp         = fread(fid,1,'float');    %ローパスフィルタ増幅度
0678 Head_meg_ch.f_notch_amp       = fread(fid,1,'float');    %ノッチフィルタ増幅度
0679 Head_meg_ch.f_lpf_cut         = fread(fid,1,'float');    %ローパスフィルタの遮断周波数[Hz]
0680 Head_meg_ch.f_hpf_cut         = fread(fid,1,'float');    %ハイパスフィルタの遮断周波数[Hz]  (*4)
0681 Head_meg_ch.f_notch_cut       = fread(fid,1,'float');    %ノッチフィルタの遮断中心周波数[Hz]  (*4)
0682 Head_meg_ch.f_dlpf_cut        = fread(fid,1,'float');    %ディジタルローパスフィルタの遮断周波数[Hz]  (*4)
0683 Head_meg_ch.f_dhpf_cut        = fread(fid,1,'float');    %ディジタルハイパスフィルタの遮断周波数[Hz]  (*4)
0684 Head_meg_ch.f_dnotch_cut      = fread(fid,1,'float');    %ディジタルノッチフィルタの遮断中心周波数[Hz]  (*4)
0685 Head_meg_ch.i_df_order        = fread(fid,1,'int32');    %ディジタルフィルタの次数
0686 Head_meg_ch.c_df_kind         = mysetstr(fread(fid,20,'char'))';  %ディジタルフィルタの窓関数種類 None,Rectangle,Hanning,Kaizer,Hamming
0687 Head_meg_ch.f_squid_biasi     = fread(fid,1,'float');    %SQUID素子のバイアス電流値[A]
0688 Head_meg_ch.f_squid_v_phy     = fread(fid,1,'float');    %SQUID素子のV−φ振幅値[V]
0689 Head_meg_ch.f_squid_biasv     = fread(fid,1,'float');    %SQUID素子のバイアス電圧[V]
0690 
0691 Head_meg_ch.f_offset_volt     = fread(fid,1,'float');    %回路のオフセット電圧[V]
0692 Head_meg_ch.i_pick_type       = fread(fid,1,'int32');    %ピックアップコイルタイプ
0693                            %         0:マグネトメータ 1:グラジオメータ
0694                            %         2:環境磁気計測用マグネトメータ
0695                            %         3:環境磁気計測用グラジオメータ
0696 
0697 Head_meg_ch.i_pick_shape      = fread(fid,1,'int32');      %ピックアップコイル形状 0:楕円 1:長方形 2:円
0698 Head_meg_ch.f_pick_radius1    = fread(fid,1,'float');    %ピックアップコイル短径 [m]
0699 Head_meg_ch.f_pick_radius2    = fread(fid,1,'float');    %ピックアップコイル長径o [m]
0700 Head_meg_ch.f_pick_base       = fread(fid,1,'float');    %ピックアップベースライン長[m]
0701 Head_meg_ch.f_phy_v_coef      = fread(fid,1,'float');    %磁束−電圧変換係数[T/V]
0702 Head_meg_ch.st_dcp            = fread(fid,3,'float');    %Vector   %検出コイル位置XYZ  デュワ座標系[m]
0703 Head_meg_ch.st_dca            = fread(fid,3,'float');    %Vector   %検出コイル法線ベクトルθφψ  デュワ座標系[rad.]
0704 Head_meg_ch.st_ccp            = fread(fid,3,'float');    %Vector   %補償コイル位置XYZ  デュワ座標系[m]
0705 Head_meg_ch.st_cca            = fread(fid,3,'float');    %Vector   %補償コイル法線ベクトルθφψ  デュワ座標系[rad.]
0706 Head_meg_ch.f_coil_balance1   = fread(fid,1,'float');    %コイルバランス補正パラメータ1
0707 Head_meg_ch.f_coil_balance1   = fread(fid,1,'float');    %コイルバランス補正パラメータ2
0708 Head_meg_ch.f_coil_balance1   = fread(fid,1,'float');    %コイルバランス補正パラメータ3
0709 Head_meg_ch.f_calb_good       = fread(fid,1,'float');    %キャリブレーション一致度[%]
0710 Head_meg_ch.f_calb_gamma      = fread(fid,1,'float');    %キャリブレーション相関係数[%]
0711 Head_meg_ch.i_meg_lock        = fread(fid,1,'int32');      %MEG計測時のSQUIDロック状態 0:ロック 1:リセット 2:エラー
0712 Head_meg_ch.i_pos_act         = fread(fid,1,'int32');      %Pos計測時のSQUIDロック状態 0:ロック 1:リセット 2:エラー
0713 Head_meg_ch.i_meg_del         = fread(fid,1,'int32');      %編集によるチャンネル状態   0:削除なし  1:削除あり
0714 Head_meg_ch.i_ad_ch_no        = fread(fid,1,'int32');      %接続されているA/D回路番号
0715 Head_meg_ch.i_fll_ch_no       = fread(fid,1,'int32');      %接続されているFLL回路番号
0716 Head_meg_ch.f_pos_amp_gain    = fread(fid,1,'float');    %ポジショニング増幅器増幅度
0717 Head_meg_ch.f_pos_fll_amp     = fread(fid,1,'float');    %ポジショニングFLL回路の増幅度
0718 Head_meg_ch.f_pos_hpf_amp     = fread(fid,1,'float');    %ポジショニングハイパスフィルタ増幅度
0719 Head_meg_ch.f_pos_lpf_amp     = fread(fid,1,'float');    %ポジショニングローパスフィルタ増幅度
0720 Head_meg_ch.f_pos_notch_amp   = fread(fid,1,'float');    %ポジショニングノッチフィルタ増幅度
0721 Head_meg_ch.f_pos_lpf_cut     = fread(fid,1,'float');    %ポジショニングローパスフィルタの遮断周波数[Hz](*4)
0722 Head_meg_ch.f_pos_hpf_cut     = fread(fid,1,'float');    %ポジショニングハイパスフィルタの遮断周波数[Hz]  (*4)
0723 Head_meg_ch.f_pos_notch_cut   = fread(fid,1,'float');    %ポジショニングノッチフィルタの遮断中心周波数[Hz]  (*4)
0724 Head_meg_ch.f_squid_phy       = fread(fid,1,'float');    %SQUID素子の外部磁束[φ0]
0725 Head_meg_ch.f_org_dlpf_cut    = fread(fid,1,'float');    %測定時のディジタルローパスフィルタの遮断周波数[Hz]  (*4)
0726 Head_meg_ch.f_org_dhpf_cut    = fread(fid,1,'float');    %測定時のディジタルハイパスフィルタの遮断周波数[Hz]  (*4)
0727 Head_meg_ch.f_org_dnotch_cut  = fread(fid,1,'float');    %測定時のディジタルノッチフィルタの遮断中心周波数[Hz]  (*4)
0728 Head_meg_ch.c_acq_df_cut      = mysetstr(fread(fid,512,'char'))'; %測定時のディジタルフィルタ遮断周波数帯域[Hz]
0729 Head_meg_ch.c_acq_df_pass     = mysetstr(fread(fid,512,'char'))'; %測定時のディジタルフィルタ通過周波数帯域[Hz]
0730 Head_meg_ch.i_acq_df_order    = fread(fid,1,'int32');      %測定時のディジタルフィルタ次数
0731 Head_meg_ch.c_acq_df_kind     = mysetstr(fread(fid,20,'char'))';  %測定時のディジタルフィルタ窓関数の種類
0732 Head_meg_ch.c_df_cut          = mysetstr(fread(fid,512,'char'))'; %オフライン処理のディジタルフィルタ遮断周波数帯域[Hz]
0733 Head_meg_ch.c_df_pass         = mysetstr(fread(fid,512,'char'))'; %オフライン処理のディジタルフィルタ通過周波数帯域[Hz]
0734 Head_meg_ch.f_bala1           = fread(fid,10,'float'); %コイルバランス補正パラメータ1
0735 Head_meg_ch.f_bala2           = fread(fid,10,'float'); %コイルバランス補正パラメータ2
0736 Head_meg_ch.f_bala3           = fread(fid,10,'float'); %コイルバランス補正パラメータ3
0737 Head_meg_ch.f_bala4           = fread(fid,10,'float'); %コイルバランス補正パラメータ4
0738 Head_meg_ch.f_squid_offset    = fread(fid,1,'float');    %SQUID素子のオフセット電圧[V]
0739 
0740 varargout={Head_meg_ch};
0741 
0742 case {'eeg_ch'}
0743 %=======================================================================================================================
0744 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0745    varargout={};
0746    return;
0747 end
0748 fid=varargin{2};
0749 offset=varargin{3};
0750 if offset<=0,varargout={[]};return,end;
0751 %14       struct   Head_eeg_ch       [生体電位チャンネル別情報]
0752 fseek(fid,offset,'bof');
0753 Head_eeg_ch.c_eeg_kind        = mysetstr(fread(fid,10,'char'))';  %生体電位種類  EEG:脳波, ECG:心電, EOG:筋電, Bress:呼吸,
0754                            %         Mark1:マーク1, Mark2:マーク2, Others:その他
0755 Head_eeg_ch.c_ch_name         = mysetstr(fread(fid,10,'char'))';  %電極名  FP1,T3,C4,....,PG1,RESP F,X1,X2,.....,etc.
0756 Head_eeg_ch.f_amp_sence       = fread(fid,1,'float');    %アンプの感度[V/V]
0757 Head_eeg_ch.f_hpf_cut         = fread(fid,1,'float');    %ハイパスフィルタの遮断周波数[Hz]  (*4)
0758 Head_eeg_ch.f_lpf_cut         = fread(fid,1,'float');    %ローパスフィルタの遮断周波数[Hz]  (*4)
0759 Head_eeg_ch.f_notch_cut       = fread(fid,1,'float');    %ノッチフィルタの中心遮断周波数[Hz]  (*4)
0760 Head_eeg_ch.c_special_cut     = mysetstr(fread(fid,4,'char'))';   %50/60Hz急峻ハイパスフィルタのON/OFF
0761 Head_eeg_ch.st_ch_xyz         = fread(fid,3,'float');    %Vector   %電極位置XYZ  デュワ座標系[m]
0762 Head_eeg_ch.i_eeg_lock        = fread(fid,1,'int32');      %計測時のチャンネル状態   0:計測  1:計測なし
0763 Head_eeg_ch.i_eeg_del         = fread(fid,1,'int32');      %編集によるチャンネル状態 0:削除なし  1:削除あり
0764 Head_eeg_ch.i_ad_ch_no        = fread(fid,1,'int32');      %接続されているA/D回路番号
0765 Head_eeg_ch.i_ser_ch_no       = fread(fid,1,'int32');      %接続されているシリアルI/F回路番号
0766 Head_eeg_ch.i_acq_lev_rej_p   = fread(fid,1,'int32');      %計測時のLevelReject(+) (=1:ON)
0767 Head_eeg_ch.i_acq_lev_rej_m   = fread(fid,1,'int32');      %計測時のLevelReject(-) (=1:ON)
0768 Head_eeg_ch.i_acq_lev_rej_pp  = fread(fid,1,'int32');      %計測時のLevelReject(P-P) (=1:ON)
0769 Head_eeg_ch.f_acq_lev_rej_p   = fread(fid,1,'float');    %計測時のLevelReject(+)の値[T]
0770 Head_eeg_ch.f_acq_lev_rej_m   = fread(fid,1,'float');    %計測時のLevelReject(-)の値[T]
0771 Head_eeg_ch.f_acq_lev_rej_pp  = fread(fid,1,'float');    %計測時のLevelReject(P-P)の値[T]
0772 
0773 varargout={Head_eeg_ch};
0774 
0775 case {'pos_coil'}
0776 %=======================================================================================================================
0777 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0778    varargout={};
0779    return;
0780 end
0781 fid=varargin{2};
0782 offset=varargin{3};
0783 if offset<=0,varargout={[]};return,end;
0784 %15       struct   Head_pos_coil     [ポジショニングコイル別情報]
0785 fseek(fid,offset,'bof');
0786 Head_pos_coil.c_name            = mysetstr(fread(fid,10,'char'))';  %コイルNo.
0787 Head_pos_coil.f_diameter        = fread(fid,1,'float');    %コイル直径[m]
0788 Head_pos_coil.f_cur             = fread(fid,1,'float');    %コイル電流値[A]  (*)Header_defファイルでは、コイル抵抗値[Ω]がセットされ、
0789                            %           Data-headファイルでは、コイル電流値[A]がセットされる
0790 Head_pos_coil.f_freq            = fread(fid,1,'float');    %コイル電流周波数[Hz]
0791 Head_pos_coil.i_turn            = fread(fid,1,'int32');      %コイルターン数
0792 Head_pos_coil.i_array           = fread(fid,1,'int32');      %コイル層数
0793 Head_pos_coil.f_pitch1          = fread(fid,1,'float');    %コイル同層上ピッチ[m]
0794 Head_pos_coil.f_pitch2          = fread(fid,1,'float');    %コイル異層間ピッチ[m]
0795 Head_pos_coil.i_ad_ch_no        = fread(fid,1,'int32');      %接続されているA/D回路番号
0796 Head_pos_coil.i_para_ch_no      = fread(fid,1,'int32');      %接続されているパラレルI/F回路番号
0797 Head_pos_coil.c_vvd_sysid       = mysetstr(fread(fid,8,'char'))';   %VIVIDシステムID
0798 Head_pos_coil.c_mri_sysid       = mysetstr(fread(fid,8,'char'))';   %VIVIDデータとリンクしたMRIのシステムID
0799 Head_pos_coil.st_vvd_orign      = fread(fid,3,'float');    %Vector   %MRI座標系におけるVIVID座標系の原点位置[m]
0800 Head_pos_coil.st_vvd_eular      = fread(fid,3,'float');    %Vector   %MRI座標系におけるVIVID座標軸のオイラー角[rad.]
0801 Head_pos_coil.st_vvd_xyz        = fread(fid,3,'float');    %Vector   %VIVID座標系におけるポジショニングコイル位置XYZ[m]
0802 
0803 varargout={Head_pos_coil};
0804 
0805 case {'pos_rept'}
0806 %=======================================================================================================================
0807 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0808    varargout={};
0809    return;
0810 end
0811 fid=varargin{2};
0812 offset=varargin{3};
0813 if offset<=0,varargout={[]};return,end;
0814 %16       struct   Head_pos_rept     [ポジショニング測定繰り返し別情報]
0815 fseek(fid,offset,'bof');
0816 Head_pos_rept.i_meg_rept        = fread(fid,1,'int32');      %直前のMEG測定繰り返し番号
0817 Head_pos_rept.i_data_begin      = fread(fid,1,'int32');      %Pos推定結果データの先頭アドレス[Byte]  (*1)
0818 
0819 varargout={Head_pos_rept};
0820 
0821 case {'etc_ch'}
0822 %=======================================================================================================================
0823 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0824    varargout={};
0825    return;
0826 end
0827 fid=varargin{2};
0828 offset=varargin{3};
0829 if offset<=0,varargout={[]};return,end;
0830 %17       struct   Head_etc_ch       [刺激チャンネル別情報]
0831 fseek(fid,offset,'bof');
0832 Head_etc_ch.c_kind            = mysetstr(fread(fid,10,'char'))';  %刺激種類    Somato, Audio, Visual, Others
0833 Head_etc_ch.c_model           = mysetstr(fread(fid,20,'char'))';  %刺激装置モデル名  (ex.)SSS-32000
0834 Head_etc_ch.c_serial_id       = mysetstr(fread(fid,20,'char'))';  %刺激装置シリアルID  (ex.)20168 4B
0835 Head_etc_ch.c_sw_rev          = mysetstr(fread(fid,8,'char'))';   %刺激システムSWバージョン
0836 Head_etc_ch.c_ch_name         = mysetstr(fread(fid,6,'char'))';   %チャンネル名
0837 Head_etc_ch.c_part            = mysetstr(fread(fid,20,'char'))';  %刺激部位  (ex.)Median Nerve
0838 Head_etc_ch.i_nrept           = fread(fid,1,'int32');      %測定繰り返し数
0839 Head_etc_ch.i_nwave           = fread(fid,1,'int32');      %繰り返し数
0840 Head_etc_ch.i_nave            = fread(fid,1,'int32');      %加算平均回数
0841 Head_etc_ch.c_ave_mode        = mysetstr(fread(fid,20,'char'))';  %加算平均モード   all, even-odd, befor-after
0842 Head_etc_ch.i_offset_start    = fread(fid,1,'int32');      %基線補正に使う区間のスタート潜時[サンプル点番号]
0843 Head_etc_ch.i_offset_end      = fread(fid,1,'int32');      %基線補正に使う区間のエンド潜時[サンプル点番号]
0844 Head_etc_ch.f_ave_cut         = fread(fid,1,'float');    %加算平均を行なう波形の電圧上限値[V]
0845 Head_etc_ch.i_nsample         = fread(fid,1,'int32');      %総サンプリング数
0846 Head_etc_ch.i_nprsample       = fread(fid,1,'int32');      %プリトリガサンプル数
0847 Head_etc_ch.i_samp_freq       = fread(fid,1,'int32');      %サンプリング周波数[Hz]
0848 Head_etc_ch.f_ad_weight       = fread(fid,1,'float');    %AD変換器1bitの重み[V/digit]
0849 Head_etc_ch.f_amp_gain        = fread(fid,1,'float');    %増幅器増幅度
0850 Head_etc_ch.i_data_begin      = fread(fid,1,'int32');      %刺激波形データの先頭アドレス[Byte]  (*1,2) (廃止)
0851 Head_etc_ch.i_block_size      = fread(fid,1,'int32');      %刺激波形データ1ブロックのバイト数 (廃止)
0852 Head_etc_ch.f_aud_rate        = fread(fid,1,'float');    %音刺激の繰り返し周期[Hz]
0853 Head_etc_ch.f_aud_freq        = fread(fid,1,'float');    %刺激音の周波数[Hz]
0854 Head_etc_ch.f_aud_rise_fall   = fread(fid,1,'float');    %刺激音の立ち上がり・立ち下がり時間[sec.]
0855 Head_etc_ch.f_aud_plateau     = fread(fid,1,'float');    %刺激音の持続時間[sec.]
0856 Head_etc_ch.c_aud_random      = mysetstr(fread(fid,4,'char'))';   %音刺激ランダム切替え     ON or OFF
0857 Head_etc_ch.c_aud_click       = mysetstr(fread(fid,4,'char'))';   %クリック音選択           ON or OFF
0858 Head_etc_ch.c_aud_burst       = mysetstr(fread(fid,4,'char'))';   %トーンバースト音選択     ON or OFF
0859 Head_etc_ch.c_aud_cont        = mysetstr(fread(fid,4,'char'))';   %連続音選択               ON or OFF
0860 Head_etc_ch.c_aud_phase       = mysetstr(fread(fid,4,'char'))';   %刺激音位相選択           +,ALT or -
0861 Head_etc_ch.f_aud_intensity   = fread(fid,1,'float');    %刺激音圧レベル[dB]
0862 Head_etc_ch.f_aud_masking     = fread(fid,1,'float');    %マスキング音圧レベル[dB]
0863 Head_etc_ch.c_aud_mask_sw     = mysetstr(fread(fid,4,'char'))';   %マスキング音選択         ON or OFF
0864 Head_etc_ch.c_aud_headphone   = mysetstr(fread(fid,4,'char'))';   %検耳切替え               L,R or LR
0865 Head_etc_ch.c_som_mode        = mysetstr(fread(fid,20,'char'))';  %体性感覚刺激モード    INT single,INT pare,INT random,
0866                            %                                 EXT train,EXT rain&post,EXT manual
0867 Head_etc_ch.f_som_rate        = fread(fid,1,'float');    %体性感覚刺激周波数[Hz]
0868 Head_etc_ch.f_som_delay       = fread(fid,1,'float');    %体性感覚刺激遅延時間[sec.]
0869 Head_etc_ch.f_som_delay_range = fread(fid,1,'float');    %体性感覚刺激遅延時間粗設定
0870 Head_etc_ch.f_som_duration    = fread(fid,1,'float');    %体性感覚刺激持続時間[sec.]
0871 Head_etc_ch.c_som_train_mode  = mysetstr(fread(fid,4,'char'))';   %体性感覚刺激トレインパルス選択        n or sec.
0872 Head_etc_ch.f_som_train       = fread(fid,1,'float');    %体性感覚刺激トレインパルス発生設定
0873 Head_etc_ch.i_som_post_n      = fread(fid,1,'int32');      %体性感覚刺激ポストパルスの個数
0874 Head_etc_ch.f_som_post_int    = fread(fid,1,'float');    %体性感覚刺激ポストパルスの間隔[sec.]
0875 Head_etc_ch.c_som_cur_sw      = mysetstr(fread(fid,4,'char'))';   %体性感覚刺激定電流出力選択     ON or OFF
0876 Head_etc_ch.c_som_volt_sw     = mysetstr(fread(fid,4,'char'))';   %体性感覚刺激定電圧出力選択     ON or OFF
0877 Head_etc_ch.f_som_fine        = fread(fid,1,'float');    %体性感覚刺激出力量  [A] or [V]
0878 Head_etc_ch.i_ad_ch_no        = fread(fid,1,'int32');      %接続されているA/D回路番号
0879 Head_etc_ch.i_ser_ch_no       = fread(fid,1,'int32');      %接続されているシリアルI/F回路番号
0880 Head_etc_ch.f_trig_interval   = fread(fid,1,'float');    %トリガ間隔[sec.]
0881 Head_etc_ch.f_trig_random     = fread(fid,1,'float');    %トリガ間隔のランダム幅[sec.]
0882 Head_etc_ch.f_trig_freq       = fread(fid,1,'float');    %トリガ出力頻度
0883 Head_etc_ch.f_trig_delay      = fread(fid,1,'float');    %トリガ遅れ補正時間[sec.]
0884 Head_etc_ch.f_di_start        = fread(fid,1,'float');    %ディジタルインプット有効入力開始時間
0885 Head_etc_ch.f_di_end          = fread(fid,1,'float');    %ディジタルインプット有効入力終了時間
0886 Head_etc_ch.i_di_on           = fread(fid,1,'int32');      %ディジタルインプットフラグ(=1:ON)
0887 Head_etc_ch.i_etc_lock        = fread(fid,1,'int32');      %計測時のチャンネル状態   0:計測  1:計測なし
0888 
0889 varargout={Head_etc_ch};
0890 
0891 case {'mark_each'}
0892 %=======================================================================================================================
0893 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0894    varargout={};
0895    return;
0896 end
0897 fid=varargin{2};
0898 offset=varargin{3};
0899 if offset<=0,varargout={[]};return,end;
0900 %18       struct   Head_mark_each    [MEGイベントマーク別情報]
0901 fseek(fid,offset,'bof');
0902 Head_mark_each.c_kind            = mysetstr(fread(fid,10,'char'))';  %マーカ種類   ivent:イベントマーカ, button:反応ボタン
0903 Head_mark_each.i_rept_no         = fread(fid,1,'int32');      %マーカをつけたMEGデータの繰り返し回数
0904 Head_mark_each.i_sample_no       = fread(fid,1,'int32');      %マーカをつけたMEGデータのサンプル点番号
0905 
0906 varargout={Head_mark_each};
0907 
0908 case {'mri_each'}
0909 %=======================================================================================================================
0910 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0911    varargout={};
0912    return;
0913 end
0914 fid=varargin{2};
0915 offset=varargin{3};
0916 if offset<=0,varargout={[]};return,end;
0917 %19       struct   Head_mri_each     [MR画像別情報]
0918 fseek(fid,offset,'bof');
0919 Head_mri_each.c_sysid           = mysetstr(fread(fid,8,'char'))';   %MR画像ファイルのシステムID
0920 Head_mri_each.i_kind            = fread(fid,1,'int32');      %MR画像の種類
0921                            %              0:PilotTRN, 1:Positioning, 2:TRN, 3:SAG, 4:COR, 5:PilotSAG, 6:PilotCOR
0922 
0923 varargout={Head_mri_each};
0924 
0925 case {'lcz_each'}
0926 %=======================================================================================================================
0927 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0928    varargout={};
0929    return;
0930 end
0931 fid=varargin{2};
0932 offset=varargin{3};
0933 if offset<=0,varargout={[]};return,end;
0934 %20       struct   Head_lcz_each     [電源別推定情報]
0935 fseek(fid,offset,'bof');
0936 Head_lcz_each.c_date            = mysetstr(fread(fid,12,'char'))';  %推定日  (ex.)1995.05.02
0937 Head_lcz_each.c_time            = mysetstr(fread(fid,10,'char'))';  %推定時刻  (ex.)21:11:04
0938 Head_lcz_each.i_rept_no         = fread(fid,1,'int32');      %推定を行った潜時の繰り返し番号
0939 Head_lcz_each.i_sample_no       = fread(fid,1,'int32');      %推定を行った潜時のサンプル点番号
0940 Head_lcz_each.c_lcz_mode        = mysetstr(fread(fid,20,'char'))';  %推定方法
0941                            %         LSM-Sphere:非線形最小二乗法球モデルダイポール推定
0942                            %         MNM-Sphere:格子点移動最小ノルム法推定
0943 Head_lcz_each.c_comment         = mysetstr(fread(fid,512,'char'))'; %コメント
0944 Head_lcz_each.st_pos_cp=zeros(5,3);
0945 for i=1:5
0946   Head_lcz_each.st_pos_cp(i,:)      = fread(fid,3,'float')';    %Vector   %ポジショニングコイル推定位置XYZ  デュワ座標系[m]  n=0〜4
0947 end
0948 Head_lcz_each.st_pos_cazeros(5,3);
0949 for i=1:5
0950   Head_lcz_each.st_pos_ca(i,:)      = fread(fid,3,'float')';    %Vector   %ポジショニングコイル推定向きθφψ  デュワ座標系[rad.]  n=0〜4
0951 end
0952 Head_lcz_each.f_pos_good=zeros(5,3);
0953 for i=1:5
0954   Head_lcz_each.f_pos_good(i)     = fread(fid,1,'float');    %ポジショニングコイル推定計算の一致度[%]  n=0〜4
0955 end
0956 Head_lcz_each.f_pos_gamma=zeros(5,3);
0957 for i=1:5
0958   Head_lcz_each.f_pos_gamma(i)    = fread(fid,1,'float');    %ポジショニングコイル推定計算の相関係数[%]  n=0〜4
0959 end
0960 Head_lcz_each.f_model_r         = fread(fid,1,'float');    %頭部球モデル半径[m]
0961 Head_lcz_each.st_model          = fread(fid,3,'float');    %Vector   %頭部球モデル中心XYZ  頭部座標系[m]
0962 Head_lcz_each.c_eval_func       = mysetstr(fread(fid,20,'char'))';  %評価関数の種類
0963                            %         Peak:f={Σ(BexーBth)2}/{ΣBex2}
0964                            %         Pattern:f= Σ{(BexーBth)2/Bex2}
0965 Head_lcz_each.f_good            = fread(fid,1,'float');    %電源推定計算の一致度[%]
0966 Head_lcz_each.f_gamma           = fread(fid,1,'float');    %電源推定計算の相関係数値[%]
0967 Head_lcz_each.i_nlcz            = fread(fid,1,'int32');      %推定電源の数
0968 Head_lcz_each.i_data_begin      = fread(fid,1,'int32');      %推定結果データの先頭アドレス[Byte]  (*1)
0969 Head_lcz_each.i_series          = fread(fid,1,'int32');      %推定電源のシリーズ番号
0970 for i=1:256
0971   Head_lcz_each.i_ch_use(i)      = fread(fid,1,'int32')';      %推定に用いたMEGチャンネルNo..  n=0〜255
0972 end                           %         ー1なら未使用              (未使用)
0973 Head_lcz_each.c_model_out       = mysetstr(fread(fid,20,'char'))';  %頭部輪郭抽出方法     Auto, Manual
0974 Head_lcz_each.c_model_wght      = mysetstr(fread(fid,20,'char'))';  %頭部球モデル作成の重み    Normal, Light, Heavy, None
0975 Head_lcz_each.st_axes=zeros(5,3);
0976 for i=1:5
0977   Head_lcz_each.st_axes(i,:)       = fread(fid,3,'float')';    %Vector   %頭部座標系指標点n位置XYZ[m]  MRI磁場座標系  n=0〜4
0978 end
0979 Head_lcz_each.c_sysid=cell(5);
0980 for i=1:5
0981   Head_lcz_each.c_sysid{i}       = mysetstr(fread(fid,8,'char'))';   %指標点nのMR画像ファイルシステムID  n=0〜4
0982 end
0983 Head_lcz_each.i_lcz_del         = fread(fid,1,'int32');      %編集による状態      0:削除なし  1:削除あり
0984 Head_lcz_each.i_mag_type        = fread(fid,1,'int32');      %推定に用いた磁場方向    0:A&B&C     1:Rad&Tan      2:Rad+Tan
0985 Head_lcz_each.c_ch_use=cell(256);
0986 for i=1:256
0987   Head_lcz_each.c_ch_use{i}      = mysetstr(fread(fid,6,'char'))';   %推定に用いたMEGチャンネル名  n=0〜255
0988 end
0989 Head_lcz_each.i_level           = fread(fid,1,'int32');      %輪郭抽出Level
0990 Head_lcz_each.i_width           = fread(fid,1,'int32');      %輪郭抽出Width
0991 Head_lcz_each.c_imagedir        = mysetstr(fread(fid,8,'char'))';   %輪郭抽出MRIの画像方向(TRN/SAG/COR)
0992 
0993 varargout={Head_lcz_each};
0994 
0995 case {'div'}
0996 %=======================================================================================================================
0997 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
0998    varargout={};
0999    return;
1000 end
1001 fid=varargin{2};
1002 offset=varargin{3};
1003 if offset<=0,varargout={[]};return,end;
1004 %21       struct   Head_div          [振り分け情報]
1005 fseek(fid,offset,'bof');
1006 Head_div.i_ndiv            = fread(fid,1,'int32');      %振り分け総数
1007 
1008 varargout={Head_div};
1009 
1010 case {'div_each'}
1011 %=======================================================================================================================
1012 if nargin<3 | isempty(varargin{1})| isempty(varargin{2}) | isempty(varargin{3})
1013    varargout={};
1014    return;
1015 end
1016 fid=varargin{2};
1017 offset=varargin{3};
1018 if offset<=0,varargout={[]};return,end;
1019 %22       struct   Head_div_each     [振り分け別情報]
1020 fseek(fid,offset,'bof');
1021 Head_div_each.c_div_name        = mysetstr(fread(fid,128,'char'))'; %振り分け名
1022 Head_div_each.i_div_to_port     = fread(fid,1,'int32');      %振り分け対応トリガ出力ポート
1023 Head_div_each.i_div_di_port     = fread(fid,1,'int32');      %振り分け対応外部入力ポート
1024 
1025 varargout={Head_div_each};
1026 
1027 
1028 otherwise
1029    error('unrecognized type')
1030 end % switch
1031 
1032 return
1033 %%% END OF meg_hread
1034 
1035 
1036 %=======================================================================================================================
1037 function out = mysetstr(in)
1038    tmp = find(in == 0);
1039    tmp = min([min(tmp) length(in)]);
1040    %out = setstr(in(1:tmp));
1041    out = char(in(1:tmp));
1042 return;
1043 
1044

Generated on Mon 22-May-2023 06:53:56 by m2html © 2005