📄 avw_hdr_write.html
字号:
0096 <span class="keyword">end</span>0097 0098 t=toc; fprintf(<span class="string">'...done (%5.2f sec).\n\n'</span>,t);0099 0100 <span class="keyword">return</span>0101 0102 0103 0104 0105 0106 <span class="comment">%----------------------------------------------------------------------------</span>0107 0108 <a name="_sub1" href="#_subfunctions" class="code">function write_header(fid,avw)</a>0109 0110 <a href="#_sub2" class="code" title="subfunction header_key(fid,hk)">header_key</a>(fid,avw.hdr.hk);0111 <a href="#_sub3" class="code" title="subfunction image_dimension(fid,dime)">image_dimension</a>(fid,avw.hdr.dime);0112 <a href="#_sub4" class="code" title="subfunction data_history(fid,hist)">data_history</a>(fid,avw.hdr.hist);0113 0114 <span class="comment">% check the file size is 348 bytes</span>0115 fbytes = ftell(fid);0116 fclose(fid);0117 <span class="keyword">if</span> ~isequal(fbytes,348),0118 msg = sprintf(<span class="string">'...file size is not 348 bytes!\n'</span>);0119 warning(msg);0120 <span class="keyword">end</span>0121 0122 <span class="keyword">return</span>0123 0124 <span class="comment">%----------------------------------------------------------------------------</span>0125 0126 <a name="_sub2" href="#_subfunctions" class="code">function header_key(fid,hk)</a>0127 0128 <span class="comment">% Original header structures - ANALYZE 7.5</span>0129 <span class="comment">% struct header_key /* header key */</span>0130 <span class="comment">% { /* off + size */</span>0131 <span class="comment">% int sizeof_hdr /* 0 + 4 */</span>0132 <span class="comment">% char data_type[10]; /* 4 + 10 */</span>0133 <span class="comment">% char db_name[18]; /* 14 + 18 */</span>0134 <span class="comment">% int extents; /* 32 + 4 */</span>0135 <span class="comment">% short int session_error; /* 36 + 2 */</span>0136 <span class="comment">% char regular; /* 38 + 1 */</span>0137 <span class="comment">% char hkey_un0; /* 39 + 1 */</span>0138 <span class="comment">% }; /* total=40 bytes */</span>0139 0140 fseek(fid,0,<span class="string">'bof'</span>);0141 0142 fwrite(fid, hk.sizeof_hdr(1), <span class="string">'int32'</span>); <span class="comment">% must be 348!</span>0143 0144 data_type = sprintf(<span class="string">'%-10s'</span>,hk.data_type); <span class="comment">% ensure it is 10 chars</span>0145 fwrite(fid, hk.data_type(1:10), <span class="string">'uchar'</span>);0146 0147 db_name = sprintf(<span class="string">'%-18s'</span>,hk.db_name); <span class="comment">% ensure it is 18 chars</span>0148 fwrite(fid, db_name(1:18), <span class="string">'uchar'</span>);0149 0150 fwrite(fid, hk.extents(1), <span class="string">'int32'</span>);0151 fwrite(fid, hk.session_error(1),<span class="string">'int16'</span>);0152 0153 regular = sprintf(<span class="string">'%1s'</span>,hk.regular); <span class="comment">% ensure it is 1 char</span>0154 fwrite(fid, regular(1), <span class="string">'uchar'</span>); <span class="comment">% might be uint8</span>0155 0156 <span class="comment">%hkey_un0 = sprintf('%1s',hk.hkey_un0); % ensure it is 1 char</span>0157 <span class="comment">%fwrite(fid, hkey_un0(1), 'uchar');</span>0158 fwrite(fid, hk.hkey_un0(1), <span class="string">'uint8'</span>);0159 0160 <span class="comment">% >Would you set hkey_un0 as char or uint8?</span>0161 <span class="comment">% Really doesn't make any difference. As far as anyone here can remember,</span>0162 <span class="comment">% this was just to pad to an even byte boundary for that structure. I guess</span>0163 <span class="comment">% I'd suggest setting it to a uint8 value of 0 (i.e, truly zero-valued) so</span>0164 <span class="comment">% that it doesn't look like anything important!</span>0165 <span class="comment">% Denny <hanson.dennis2@mayo.edu></span>0166 0167 <span class="keyword">return</span>0168 0169 <span class="comment">%----------------------------------------------------------------------------</span>0170 0171 <a name="_sub3" href="#_subfunctions" class="code">function image_dimension(fid,dime)</a>0172 0173 <span class="comment">%struct image_dimension</span>0174 <span class="comment">% { /* off + size */</span>0175 <span class="comment">% short int dim[8]; /* 0 + 16 */</span>0176 <span class="comment">% char vox_units[4]; /* 16 + 4 */</span>0177 <span class="comment">% char cal_units[8]; /* 20 + 8 */</span>0178 <span class="comment">% short int unused1; /* 28 + 2 */</span>0179 <span class="comment">% short int datatype; /* 30 + 2 */</span>0180 <span class="comment">% short int bitpix; /* 32 + 2 */</span>0181 <span class="comment">% short int dim_un0; /* 34 + 2 */</span>0182 <span class="comment">% float pixdim[8]; /* 36 + 32 */</span>0183 <span class="comment">% /*</span>0184 <span class="comment">% pixdim[] specifies the voxel dimensions:</span>0185 <span class="comment">% pixdim[1] - voxel width</span>0186 <span class="comment">% pixdim[2] - voxel height</span>0187 <span class="comment">% pixdim[3] - interslice distance</span>0188 <span class="comment">% ..etc</span>0189 <span class="comment">% */</span>0190 <span class="comment">% float vox_offset; /* 68 + 4 */</span>0191 <span class="comment">% float roi_scale; /* 72 + 4 */</span>0192 <span class="comment">% float funused1; /* 76 + 4 */</span>0193 <span class="comment">% float funused2; /* 80 + 4 */</span>0194 <span class="comment">% float cal_max; /* 84 + 4 */</span>0195 <span class="comment">% float cal_min; /* 88 + 4 */</span>0196 <span class="comment">% int compressed; /* 92 + 4 */</span>0197 <span class="comment">% int verified; /* 96 + 4 */</span>0198 <span class="comment">% int glmax; /* 100 + 4 */</span>0199 <span class="comment">% int glmin; /* 104 + 4 */</span>0200 <span class="comment">% }; /* total=108 bytes */</span>0201 0202 fwrite(fid, dime.dim(1:8), <span class="string">'int16'</span>);0203 fwrite(fid, dime.vox_units(1:4),<span class="string">'uchar'</span>);0204 fwrite(fid, dime.cal_units(1:8),<span class="string">'uchar'</span>);0205 fwrite(fid, dime.unused1(1), <span class="string">'int16'</span>);0206 fwrite(fid, dime.datatype(1), <span class="string">'int16'</span>);0207 fwrite(fid, dime.bitpix(1), <span class="string">'int16'</span>);0208 fwrite(fid, dime.dim_un0(1), <span class="string">'int16'</span>);0209 fwrite(fid, dime.pixdim(1:8), <span class="string">'float32'</span>);0210 fwrite(fid, dime.vox_offset(1), <span class="string">'float32'</span>);0211 0212 <span class="comment">% Ensure compatibility with SPM (according to MRIcro)</span>0213 <span class="keyword">if</span> dime.roi_scale == 0, dime.roi_scale = 0.00392157; <span class="keyword">end</span>0214 fwrite(fid, dime.roi_scale(1), <span class="string">'float32'</span>);0215 0216 fwrite(fid, dime.funused1(1), <span class="string">'float32'</span>);0217 fwrite(fid, dime.funused2(1), <span class="string">'float32'</span>);0218 fwrite(fid, dime.cal_max(1), <span class="string">'float32'</span>);0219 fwrite(fid, dime.cal_min(1), <span class="string">'float32'</span>);0220 fwrite(fid, dime.compressed(1), <span class="string">'int32'</span>);0221 fwrite(fid, dime.verified(1), <span class="string">'int32'</span>);0222 fwrite(fid, dime.glmax(1), <span class="string">'int32'</span>);0223 fwrite(fid, dime.glmin(1), <span class="string">'int32'</span>);0224 0225 <span class="keyword">return</span>0226 0227 <span class="comment">%----------------------------------------------------------------------------</span>0228 0229 <a name="_sub4" href="#_subfunctions" class="code">function data_history(fid,hist)</a>0230 0231 <span class="comment">% Original header structures - ANALYZE 7.5</span>0232 <span class="comment">%struct data_history</span>0233 <span class="comment">% { /* off + size */</span>0234 <span class="comment">% char descrip[80]; /* 0 + 80 */</span>0235 <span class="comment">% char aux_file[24]; /* 80 + 24 */</span>0236 <span class="comment">% char orient; /* 104 + 1 */</span>0237 <span class="comment">% char originator[10]; /* 105 + 10 */</span>0238 <span class="comment">% char generated[10]; /* 115 + 10 */</span>0239 <span class="comment">% char scannum[10]; /* 125 + 10 */</span>0240 <span class="comment">% char patient_id[10]; /* 135 + 10 */</span>0241 <span class="comment">% char exp_date[10]; /* 145 + 10 */</span>0242 <span class="comment">% char exp_time[10]; /* 155 + 10 */</span>0243 <span class="comment">% char hist_un0[3]; /* 165 + 3 */</span>0244 <span class="comment">% int views /* 168 + 4 */</span>0245 <span class="comment">% int vols_added; /* 172 + 4 */</span>0246 <span class="comment">% int start_field; /* 176 + 4 */</span>0247 <span class="comment">% int field_skip; /* 180 + 4 */</span>0248 <span class="comment">% int omax; /* 184 + 4 */</span>0249 <span class="comment">% int omin; /* 188 + 4 */</span>0250 <span class="comment">% int smax; /* 192 + 4 */</span>0251 <span class="comment">% int smin; /* 196 + 4 */</span>0252 <span class="comment">% }; /* total=200 bytes */</span>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -