Follow-up to SPM99 Gem 3: NaNing zero values from the NISOx blog (formerly Neuroimaging Statistics Tips & Tools)
This was the topic of SPM99 Gem 3, converting NaN’s to zeros. For SPM8, see the following script zeronan.m
that will zero NaN’s for you.
-Tom
function ofNm = zeronan(ifNm,val) % FORMAT ofNm = zeronan(ifNm,val) % ifNm - Input filename(s) % val - Value to set NaN's to (defaults to zero) % % Output: % ofNm - Cell array of output filenames. % % % Images have NaN's replaced with zeros, and new images, prefixed with a % 'z', are created. % %________________________________________________________________________ % Based on zeronan.m,v 1.3 2005/10/26 21:58:55 nichols Exp % Thomas Nichols, 1 April 2011 if nargin<2, val = 0; end if nargin0'); end if ~iscell(ifNm) ifNm = cellstr(ifNm)'; else ifNm = ifNm(:)'; end OtfNm = {}; for fNm = ifNm fNm = fNm{:}; OfNm = ['z' fNm]; [pth,nm,xt,vol] = spm_fileparts(fNm); OfNm = fullfile(pth,['z' nm xt]); % Code snippet from John Ashburner... VI = spm_vol(fNm); VO = VI; VO.fname = OfNm; VO = spm_create_vol(VO); for i=1:VI.dim(3), img = spm_slice_vol(VI,spm_matrix([0 0 i]),VI.dim(1:2),0); tmp = find(isnan(img)); img(tmp) = val; VO = spm_write_plane(VO,img,i); end; OtfNm = {OtfNm{:} OfNm}; end if nargout>0 ofNm = OtfNm; end