www.gusucode.com > 国外编的干涉合成孔径雷达(InSAR)Matlab工具箱 > 国外编的干涉合成孔径雷达(InSAR)Matlab工具箱/insarmatlab/insar/freadras.m

    function [data,header,cmap] = freadras(filename);
% FREADRAS  --  Read a SUNraster file.
%
% [DATA, HEADER, CMAP] = FREADRAS(filename);
%
% FREADRAS reads 8 and 32 bit depth rasterf files.
%

%// Bert Kampes, 06-Oct-2000
more off

%%% Check input.
if ( nargin == 0 ) help readras; error('not enough input'); end;
if (~ischar(filename))
  error('freadras: argument must be a string');
end;
fid = fopen(filename);
if (fid<0) error(ferror(fid)); end;

%%% The header
disp(['Reading sunraster header 32B for file: ',filename]);
header = fread(fid,[8 1],'int32');
disp(['ras_magic:     ', int2str(header(1))]);
disp(['ras_width:     ', int2str(header(2))]);
disp(['ras_height:    ', int2str(header(3))]);
disp(['ras_depth:     ', int2str(header(4))]);
disp(['ras_length:    ', int2str(header(5))]);
disp(['ras_type:      ', int2str(header(6))]);
disp(['ras_maptype:   ', int2str(header(7))]);
disp(['ras_maplength: ', int2str(header(8))]);

%%% The cmap.
if (header(8)~=0)
  disp(['Reading cmap from raster file']);
  r    = fread(fid,[header(8)/3 1],'uint8');
  g    = fread(fid,[header(8)/3 1],'uint8');
  b    = fread(fid,[header(8)/3 1],'uint8');
  cmap = [r g b];
  cmap = cmap ./ 256;
else
  disp(['No cmap in raster file data']);
end

%%% The data.
disp(['Reading sunraster data']);
switch header(4)
  case 8
    data = fread(fid,[header(2) header(3)],'uint8');
  case 32
    data = fread(fid,[header(2) header(3)],'float32');
  otherwise
    error(['Unknown format, data depth = ',num2str(header(4))]);
end;


fclose(fid);
% major col order in matlab, so transpose
data=data.';


%%%EOF
more on