using fread(fid,[n,inf],prec)
3 views (last 30 days)
Show older comments
Not necessarily a question...
when using fread(fid,[n,Inf],prec)
if n is defined as a small integer (int8, uint16), then resulting row vector [n, Inf] is restricted to the size of n.
if n = uint16 then the row vector [n, Inf] returns [n, 65535]. When reading a large file, the size of n restricts the number of records that can be read. This took me quite a while to unravel. I think the documentation needs to be more specific to show this limitation. For me, I just made n into a 32 bit integer or larger.
0 Comments
Answers (1)
Walter Roberson
on 3 May 2019
This is not an fread() issue. This is entirely due to the behaviour of the [] operator when you combine unlike data types, which is documented at https://www.mathworks.com/help/matlab/matlab_prog/valid-combinations-of-unlike-classes.html . Generally speaking, the most restrictive data type is the one that results.
You can see it happening even just with [uint8(123), -5] which gives a uint8 vector of [123, 0] where the -5 has been converted to uint8 and saturated to 0. You can see it with [uint8(123), inf] which gives a uint8 vector of [123, 255] where the inf has been converted to uint8 and saturated to 255.
The conversion of data type due to the [] operator happens before fread receives the input. As far as fread() can tell, the input was always uint8([123 255])
2 Comments
Walter Roberson
on 6 May 2019
At the bottom of the fread documentation, you can click on the stars in the "How useful was this information" survey, and if you give it a low rank then it will ask you how it could be improved, which will send a note to the documentation team. Or if you have software support, you can open a case directly suggesting a documentation update.
This is not an fread issue, so I doubt they will change the documentation, but I am not them, so they might surprise me.
See Also
Categories
Find more on Large Files and Big Data in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!