📄 nano3read.m
字号:
function [img, header, errmsg] = nano3read(filename)%NANO3READ Read the header and the image from a nanoscope file.%% [I, H, ERRMSG] = NANO3READ(FILENAME)%% Return: 1) The header of the file, empty on error.% 2) The image matrix, empty on error.% 3) An error message if occours.%% On error, an error message is returned% After read the file the image is 90 degree rotated% to be reproducible with the nanoscope.%% Claudio 6 May, 1994.%%% Copyright (c) 1995 by Claudio Rivetti and Mark Young% claudio@alice.uoregon.edu, mark@alice.uoregon.edu%HEADER_SIZE_NS2 = 2048;HEADER_SIZE_NS3 = 8192;fp = fopen(filename, 'r');if fp == -1 errmsg='File not found'; return;endh = fread(fp, HEADER_SIZE_NS2, 'char');h=setstr(h)';header_size=getparameter(h, 'Data length',1);if header_size==inf fclose(fp); errmsg='Wrong file format'; returnendfrewind(fp);header = fread(fp, header_size, 'char');header = setstr(header)';il=findstr(header, 'image list');bs=findstr(header, '\*');p=[];for i=1:length(il) p=[p bs(max(find(bs<il(i))))];endp=[p find(header==26)];p=unique(p);nimages=length(p)-1;if nimages==2 type1=getparameter(header, 'Image data',1); type2=getparameter(header, 'Image data',2); msg=['In ' filename '||',... ' Image 1 -> ' type1 '|',... ' Image 2 -> ' type2 '|',... '| Which one do you want to load? |']; r=alexdlg(msg, 'First', 'Second', 'Cancel');elseif nimages>2 type1=getparameter(header, 'Image data',1); type2=getparameter(header, 'Image data',2); type3=getparameter(header, 'Image data',3) msg=['In ' filename '||',... ' Image 1 -> ' type1 '|',... ' Image 2 -> ' type2 '|',... ' Image 3 -> ' type3 '|',... '| Which one do you want to load? |']; r=alexdlg(msg, 'First', 'Second', 'Third');endif strcmp(r, 'Cancel') fclose(fp); return;endif strcmp(r, 'First'), ni=1;endif strcmp(r, 'Second'), ni=2;endif strcmp(r, 'Third'), ni=3;endif nimages>1 nh=[header(1:p(1)-1) header(p(ni):p(ni+1)-1)]; header=[nh zeros(1,length(header)-length(nh))];endoffset=getparameter(header, 'Data offset',inf);if getparameter(header, 'Version',1) ~= inf s1=getparameter(header, 'Samps/line',inf); s2=getparameter(header, 'Number of lines',inf); msize=[s1 s2];else msize=getparameter(header, 'Samps/line',inf);endfseek(fp, offset, -1);img = fread(fp, msize, 'short', 'vaxd');img = rot90(img);fclose(fp);return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -