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