Code covered by the BSD License  

Highlights from
ENVI file reader/writer

5.0

5.0 | 2 ratings Rate this file 54 Downloads (last 30 days) File Size: 7.38 KB File ID: #27172

ENVI file reader/writer

by

 

05 Apr 2010 (Updated )

Mini-toolbox for reading and writing ENVI data and header files (including complex).

| Watch this File

File Information
Description

%test script

%clears workspace
clearvars;

%generate a complex 3-D variable
D=rand(2,3,4)+j*rand(2,3,4);

%create basic ENVI header info about a Matlab variable
info=enviinfo(D);

%write the variable and the associated header info in a pair of binary/header ENVI files
enviwrite(D,info,'a.dat'); %implicit header file is "a.dat.hdr" (if not explicitly passed)

%read a complex n-D variable from "a.dat" and "a.dat.hdr" ENVI files
[D2,info2]=enviread('a.dat');

%some comparisons to validate consistency of our read/write procedures
isequal(D,D2)
isequal(info,info2)

%modify the header info (introducing offset in ENVI header)
info3=info2;
info3.header_offset=10000;
D3=D2; %same as D2

%writing the D3 (same as D2), but with 10000 offset
enviwrite(D3,info3,'a3.dat');

%read the offset variable (D3)
[D3a,info3a]=enviread('a3.dat');

%comparisons to validate read/write
isequal(D3,D3a)
isequal(info3,info3a)

Acknowledgements

Envi To Matlab, Matlab To Envi, Envi File Reader, Updated 2/9/2010, and Read Envihdr inspired this file.

MATLAB release MATLAB 7 (R14)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (7)
14 Aug 2014 Buwei  
26 Jun 2013 Felix Totir

@James Wheeler: thank you for your contribution. Unfortunately, I am not able to test it, but please fork the code on the MatlabCentral. Or, if others confirm and youa gree, I will integrate it into the current code (with credit).

25 Jun 2013 James Wheeler

I've written a few lines for envihdrread (at line 70) to allow for projections with whitespace in them (i.e. Geographic Lat/Lon). Apologies for clumsy script, I'm new to this...
if ischar(line{2})
line{2}=[line{1},' ',line{2}];
for n=1:numel(line)-1
line{n}=line{n+1};
end
line(numel(line))=[] ;
end

22 Aug 2012 Benjamin

writeenvi.m produces error: Undefined function 'fix' for input arguments of type 'struct' in num2str using version 7.14(2012A).

18 Jan 2012 Felix Totir

@Jaroslaw Tuszynski: The provided function envidataread.m is esentially a wrapper around multibandread(). Even a hint towards multibandread is given in the comments on lines 88 and 90 of that function (please have a look at the code).

However, using multibandread alone requires *reading the header by a human*. The purpose of this little toolbox is exactly to automatize that operation (working with headers and data).

18 Jan 2012 Jaroslaw Tuszynski

A better option is to use MATLAB's multibandread function

30 Nov 2010 Margaret

Very useful for importing ENVI standard files into Matlab as well as outputing the results from a Matlab analysis back to ENVI! Runs fast - no compatibility issues with large files.

Updates
26 Jul 2010

improved description

Contact us