function [img, header, errmsg] = nano2read(filename) %NANO2READ Read the header and the image from a nanoscope 2 file. % % [I, H, ERRMSG] = NANO2READ(FILENAME, OPTION) % % Return: 1) The header of the file, empty on error. % 2) The image matrix, empty on error. % 3) An error message if occours. % % OPTION can be: FIRST -return the first image % SECOND -return the second image % BOTH -return both images in one matrix % % On error, an error message is displayed if nargout < 3. % After read the file the image is 90 degree rotated and % the bytes are flipped in order to be reproducible % with the nanoscope. % % Claudio 11 Oct, 1995. % % % Copyright (c) 1995 by Claudio Rivetti and Mark Young % claudio@alice.uoregon.edu, mark@alice.uoregon.edu % global Original_NANO2_header HEADER_SIZE_NS2 = 2048; fp = fopen(filename, 'r'); if fp == -1 if nargout==3 errmsg='File not found'; else error('File not found'); end return; end [header,n] = fread(fp, HEADER_SIZE_NS2, 'char'); header=setstr(header)'; if n~=HEADER_SIZE_NS2 | isempty(findstr(header, 'z_scale')) fclose(fp); if nargout==3 errmsg='Wrong file format'; else error('Wrong file format'); end return end header=strrep(header, [13 10], [13 10, '\']); header=['\*' header]; header=strrep(header, [13 10 92 32 ], 32); header=strrep(header, [92 26], 26); header=strrep(header, ' =', ':'); Original_NANO2_header=header; header=setparameter(header, '*ALEX Header', ''); header=setparameter(header, 'File Type', 'NANO2'); header=setparameter(header, 'Date', getparameter(header, 'time',1)); header=setparameter(header, 'Data length', HEADER_SIZE_NS2); qq=getparameter(header, 'num_samp',1); header=setparameter(header, 'Samps/line', [qq qq]); header=setparameter(header, 'Serial number', ' '); header=setparameter(header, 'Id', getparameter(header, 'h_id',1)); header=setparameter(header, 'X offset', '0 nm'); header=setparameter(header, 'Y offset', '0 nm'); qq=getparameter(header, 'scan_sz',1); header=setparameter(header, 'Scan size', [num2str(qq) ' nm']); f=getparameter(header, 'z_scale', 1)/16385; header=setparameter(header, 'Trasform. Factor', f); header=setparameter(header, 'Note', [getparameter(header, 'text',1) ' ']); header=strrep(header, ' ', ' '); header=strrep(header, ' ', ''); hlen=length(header); if hlen > HEADER_SIZE_NS2 header=header(1:HEADER_SIZE_NS2); else header=[header zeros(1,HEADER_SIZE_NS2-hlen)]; end msize=getparameter(header, 'Samps/line',2); img = fread(fp, msize, 'short', 'vaxd'); fclose(fp); img = rot90(img); return