MATLAB Answers

what is different between fget1 and fread ?

12 views (last 30 days)
>> fnm='2.hdr';
>> I=enviread(path,fnm);
??? Error using ==> fgetl at 44
Invalid file identifier. Use fopen to generate a valid file identifier.
Error in ==> enviread>read_envihdr at 190
line = fgetl(fid);
Error in ==> enviread at 16


Sign in to comment.

Accepted Answer

Mohammad Abouali
Mohammad Abouali on 2 Mar 2016
Edited: Mohammad Abouali on 2 Mar 2016
I don't think enviread is a function provided by mathworks. It appears it is something that users have provided.
Try multibandread() function of matlab to read ENVI files. I use this function when I am reading ENVI files and it works very well. If you want some instruction on how to use it to read ENVI files, the following is a good resource.


yanjie qi
yanjie qi on 5 Mar 2016
I want to convert the data(2-array ) into an image? but the elements are too many, can you give me some suggestions, appreciate on it
Mohammad Abouali
Mohammad Abouali on 6 Mar 2016
I am not sure if I understand thequestion

Sign in to comment.

More Answers (1)

Jan on 2 Mar 2016
Do not overwrite the important Matlab function path with a variable. Although this will not be the reason of the error, it is a bad idea and might cause severe problems during debugging.
The error means, that the file could not be opened. Most likely the file or folder name is not correct.
I do not see a relation between the error message and the title "difference between fget1 and fread". As the docs explain, fgetl reads a complete line from a text file, while fread reads a specified number of elements from a text or binary file in a specified format.


yanjie qi
yanjie qi on 3 Mar 2016
thank you, sir
I know that path is a matlab variable, this is not the main error.I tried to put .hdr .raw and M file togeter,and ran it. This time it with such error, I will show you :
??? Undefined function or method 'fget1' for input arguments of type 'double'.
Error in ==> enviread>read_envihdr at 190 line = fget1(fid);
Error in ==> enviread at 16 info=read_envihdr(hdrfile);
also I load the original file.
Jan on 3 Mar 2016
Do you see, that your command is called "fetg1" with a trailing "one" not an lower-case "L"? The attached code uses "fgetl" with an L. So you error message does not match the code - please do not confuse the readers with such jokes.
The code is instable. The comparison " if varargin{2}=='date' " will fail with an error, if the 2nd input does not have 4 characters. Use this instead:
if strcmp(varargin{2}, 'date')
The eval s are such ugly!
eval(['info.',param,' = ''',value,''';'])
What about:
info.(param) = value;

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by