function spiwrite(fname, img, h) %SPIWRITE Write the image in the Spider format. % % SPIWRITE(FILENAME, IMAGE, HEADER) % % FILENAME the file name to store the image. % IMAGE is the image matrix (better if in nm). % HEADER is the AFM file header. (optional) % % On error, an error message is displayed. % % Claudio 5 Apr, 1995. % % Copyright (c) 1995 by Claudio Rivetti and Mark Young % claudio@alice.uoregon.edu, mark@alice.uoregon.edu % header=1; if nargin == 2 header=0; end if nargin < 2 error('Too few input arguments.'); end [fp, errmsg]=fopen(fname, 'w+'); if fp==-1 error(errmsg); end % Make the BINHEADER nslice=-1; nrow=size(img, 1); %????? nrec=nrow*4; nlabel=0; iform=1; imami=1; fmax=max(max(img)); fmin=min(min(img)); av=mean(mean(img)); sig=-1; ihist=0; nsum=size(img, 2); labrec=2; iangle=0; phi=0; theta=0; gamma=0; xoff=0; yoff=0; zoff=0; if header ss=scansize(h); else ss=nsum; end scale=ss/nsum; %???? labbyt=512*8; rowbyt=nsum*4; BINHEADER=[nslice nrow nrec nlabel iform imami fmax fmin av sig ihist nsum labrec iangle phi theta gamma xoff yoff zoff scale labbyt rowbyt]; % Make the ASCIIHEADER if header dt=getparameter(h, 'Date',1); s=find(dt==' '); tim=dt(1:s(1)-1); m=dt(s(3)+1:s(4)-1); d=dt(s(4)+1:s(5)-1); y=dt(s(5)+1:length(dt)); idat=[d '-' m '-' y]; l=length(idat); idat=[idat blanks(12-l)]; itim=tim(1:8); itit=getparameter(h, 'Note',1); if itit==inf, itit=[];end; itit=[' ' itit]; l=length(itit); if l>80 itit=itit(1:80); l=80; end itit=[itit setstr(zeros(1,3232-l))]; else idat=date; l=length(idat); idat=[idat blanks(12-l)]; itim=time; itit=[' ' setstr(zeros(1,3232-1))]; end ASCIIHEADER=[idat itim itit]; ZEROS=zeros(1,188); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fwrite(fp, BINHEADER, 'float'); fwrite(fp, ZEROS, 'float'); fwrite(fp, ASCIIHEADER, 'char'); img = rot90(img, -1); img = fliplr(img); fwrite(fp, img, 'float'); fclose(fp); return;