📄 avw_hdr_write.html
字号:
0253 0254 descrip = sprintf(<span class="string">'%-80s'</span>, hist.descrip); <span class="comment">% 80 chars</span>0255 aux_file = sprintf(<span class="string">'%-24s'</span>, hist.aux_file); <span class="comment">% 24 chars</span>0256 originator = sprintf(<span class="string">'%-10s'</span>, hist.originator); <span class="comment">% 10 chars</span>0257 generated = sprintf(<span class="string">'%-10s'</span>, hist.generated); <span class="comment">% 10 chars</span>0258 scannum = sprintf(<span class="string">'%-10s'</span>, hist.scannum); <span class="comment">% 10 chars</span>0259 patient_id = sprintf(<span class="string">'%-10s'</span>, hist.patient_id); <span class="comment">% 10 chars</span>0260 exp_date = sprintf(<span class="string">'%-10s'</span>, hist.exp_date); <span class="comment">% 10 chars</span>0261 exp_time = sprintf(<span class="string">'%-10s'</span>, hist.exp_time); <span class="comment">% 10 chars</span>0262 hist_un0 = sprintf( <span class="string">'%-3s'</span>, hist.hist_un0); <span class="comment">% 3 chars</span>0263 0264 <span class="comment">% ---</span>0265 <span class="comment">% The following should not be necessary, but I actually</span>0266 <span class="comment">% found one instance where it was, so this totally anal</span>0267 <span class="comment">% retentive approach became necessary, despite the</span>0268 <span class="comment">% apparently elegant solution above to ensuring that variables</span>0269 <span class="comment">% are the right length.</span>0270 0271 <span class="keyword">if</span> length(descrip) < 80,0272 paddingN = 80-length(descrip);0273 padding = char(repmat(double(<span class="string">' '</span>),1,paddingN));0274 descrip = [descrip,padding];0275 <span class="keyword">end</span>0276 <span class="keyword">if</span> length(aux_file) < 24,0277 paddingN = 24-length(aux_file);0278 padding = char(repmat(double(<span class="string">' '</span>),1,paddingN));0279 aux_file = [aux_file,padding];0280 <span class="keyword">end</span>0281 <span class="keyword">if</span> length(originator) < 10,0282 paddingN = 10-length(originator);0283 padding = char(repmat(double(<span class="string">' '</span>),1,paddingN));0284 originator = [originator, padding];0285 <span class="keyword">end</span>0286 <span class="keyword">if</span> length(generated) < 10,0287 paddingN = 10-length(generated);0288 padding = char(repmat(double(<span class="string">' '</span>),1,paddingN));0289 generated = [generated, padding];0290 <span class="keyword">end</span>0291 <span class="keyword">if</span> length(scannum) < 10,0292 paddingN = 10-length(scannum);0293 padding = char(repmat(double(<span class="string">' '</span>),1,paddingN));0294 scannum = [scannum, padding];0295 <span class="keyword">end</span>0296 <span class="keyword">if</span> length(patient_id) < 10,0297 paddingN = 10-length(patient_id);0298 padding = char(repmat(double(<span class="string">' '</span>),1,paddingN));0299 patient_id = [patient_id, padding];0300 <span class="keyword">end</span>0301 <span class="keyword">if</span> length(exp_date) < 10,0302 paddingN = 10-length(exp_date);0303 padding = char(repmat(double(<span class="string">' '</span>),1,paddingN));0304 exp_date = [exp_date, padding];0305 <span class="keyword">end</span>0306 <span class="keyword">if</span> length(exp_time) < 10,0307 paddingN = 10-length(exp_time);0308 padding = char(repmat(double(<span class="string">' '</span>),1,paddingN));0309 exp_time = [exp_time, padding];0310 <span class="keyword">end</span>0311 <span class="keyword">if</span> length(hist_un0) < 10,0312 paddingN = 10-length(hist_un0);0313 padding = char(repmat(double(<span class="string">' '</span>),1,paddingN));0314 hist_un0 = [hist_un0, padding];0315 <span class="keyword">end</span>0316 0317 <span class="comment">% -- if you thought that was anal, try this;</span>0318 <span class="comment">% -- lets check for unusual ASCII char values!</span>0319 0320 <span class="keyword">if</span> find(double(descrip)>128),0321 indexStrangeChar = find(double(descrip)>128);0322 descrip(indexStrangeChar) = <span class="string">' '</span>;0323 <span class="keyword">end</span>0324 <span class="keyword">if</span> find(double(aux_file)>128),0325 indexStrangeChar = find(double(aux_file)>128);0326 aux_file(indexStrangeChar) = <span class="string">' '</span>;0327 <span class="keyword">end</span>0328 <span class="keyword">if</span> find(double(originator)>128),0329 indexStrangeChar = find(double(originator)>128);0330 originator(indexStrangeChar) = <span class="string">' '</span>;0331 <span class="keyword">end</span>0332 <span class="keyword">if</span> find(double(generated)>128),0333 indexStrangeChar = find(double(generated)>128);0334 generated(indexStrangeChar) = <span class="string">' '</span>;0335 <span class="keyword">end</span>0336 <span class="keyword">if</span> find(double(scannum)>128),0337 indexStrangeChar = find(double(scannum)>128);0338 scannum(indexStrangeChar) = <span class="string">' '</span>;0339 <span class="keyword">end</span>0340 <span class="keyword">if</span> find(double(patient_id)>128),0341 indexStrangeChar = find(double(patient_id)>128);0342 patient_id(indexStrangeChar) = <span class="string">' '</span>;0343 <span class="keyword">end</span>0344 <span class="keyword">if</span> find(double(exp_date)>128),0345 indexStrangeChar = find(double(exp_date)>128);0346 exp_date(indexStrangeChar) = <span class="string">' '</span>;0347 <span class="keyword">end</span>0348 <span class="keyword">if</span> find(double(exp_time)>128),0349 indexStrangeChar = find(double(exp_time)>128);0350 exp_time(indexStrangeChar) = <span class="string">' '</span>;0351 <span class="keyword">end</span>0352 <span class="keyword">if</span> find(double(hist_un0)>128),0353 indexStrangeChar = find(double(hist_un0)>128);0354 hist_un0(indexStrangeChar) = <span class="string">' '</span>;0355 <span class="keyword">end</span>0356 0357 0358 <span class="comment">% --- finally, we write the fields</span>0359 0360 fwrite(fid, descrip(1:80), <span class="string">'uchar'</span>);0361 fwrite(fid, aux_file(1:24), <span class="string">'uchar'</span>);0362 0363 0364 <span class="comment">%orient = sprintf( '%1s', hist.orient); % 1 char</span>0365 <span class="comment">%fwrite(fid, orient(1), 'uchar');</span>0366 fwrite(fid, hist.orient(1), <span class="string">'uint8'</span>); <span class="comment">% see note below on char</span>0367 0368 fwrite(fid, originator(1:10), <span class="string">'uchar'</span>);0369 fwrite(fid, generated(1:10), <span class="string">'uchar'</span>);0370 fwrite(fid, scannum(1:10), <span class="string">'uchar'</span>);0371 fwrite(fid, patient_id(1:10), <span class="string">'uchar'</span>);0372 fwrite(fid, exp_date(1:10), <span class="string">'uchar'</span>);0373 fwrite(fid, exp_time(1:10), <span class="string">'uchar'</span>);0374 fwrite(fid, hist_un0(1:3), <span class="string">'uchar'</span>);0375 0376 fwrite(fid, hist.views(1), <span class="string">'int32'</span>);0377 fwrite(fid, hist.vols_added(1), <span class="string">'int32'</span>);0378 fwrite(fid, hist.start_field(1),<span class="string">'int32'</span>);0379 fwrite(fid, hist.field_skip(1), <span class="string">'int32'</span>);0380 fwrite(fid, hist.omax(1), <span class="string">'int32'</span>);0381 fwrite(fid, hist.omin(1), <span class="string">'int32'</span>);0382 fwrite(fid, hist.smax(1), <span class="string">'int32'</span>);0383 fwrite(fid, hist.smin(1), <span class="string">'int32'</span>);0384 0385 <span class="keyword">return</span>0386 0387 0388 0389 <span class="comment">% Note on using char:</span>0390 <span class="comment">% The 'char orient' field in the header is intended to</span>0391 <span class="comment">% hold simply an 8-bit unsigned integer value, not the ASCII representation</span>0392 <span class="comment">% of the character for that value. A single 'char' byte is often used to</span>0393 <span class="comment">% represent an integer value in Analyze if the known value range doesn't</span>0394 <span class="comment">% go beyond 0-255 - saves a byte over a short int, which may not mean</span>0395 <span class="comment">% much in today's computing environments, but given that this format</span>0396 <span class="comment">% has been around since the early 1980's, saving bytes here and there on</span>0397 <span class="comment">% older systems was important! In this case, 'char' simply provides the</span>0398 <span class="comment">% byte of storage - not an indicator of the format for what is stored in</span>0399 <span class="comment">% this byte. Generally speaking, anytime a single 'char' is used, it is</span>0400 <span class="comment">% probably meant to hold an 8-bit integer value, whereas if this has</span>0401 <span class="comment">% been dimensioned as an array, then it is intended to hold an ASCII</span>0402 <span class="comment">% character string, even if that was only a single character.</span>0403 <span class="comment">% Denny <hanson.dennis2@mayo.edu></span>0404 0405 <span class="comment">% See other notes in avw_hdr_read</span></pre></div><hr><address>Generated on Fri 21-May-2004 12:38:21 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> © 2003</address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -