How to invert the function typecast?

4 次查看(过去 30 天)
Hello,
I am using typecast to convert from double to uint8 and store some data in a file:
fwrite(fid,typecast(double(data),'uint8'),'uint8');
Now, I want to read this data back, but if I use fread like this:
data2 = fread(fid, length(data), 'double');
when it finds a value equivalent to a new line (10) or carriage return (13) - I am not sure which one of those actually is - it corrupts the data read after that value.
How can I avoid this problem? I need to write the data using uint8 because I need to read it from an ARM, process it, write it back, and read it in Matlab.
I do not know if there is a better way of doing all this.
Thanks!
  3 个评论
James Tursa
James Tursa 2016-4-20
编辑:James Tursa 2016-4-20
Please show all of your relevant code, including your fopen statements, what is the class and size of the variable data, all of your fwrite and fread statements, etc.
Dani Tormo
Dani Tormo 2016-4-20
编辑:Dani Tormo 2016-4-20
Writing the data into the SD card (data_array is a 10000x1 array in double-precision format):
fid = fopen('asdf.txt','wt');
fwrite(fid,typecast(data_array,'uint8'),'uint8');
fclose(fid);
Reading back the data from the SD card:
fid = fopen('asdf.txt','r');
data_array2 = fread(fid, length(data_array), 'double');
fclose(fid);
If I open the file asdf.txt with notepad, I can see when comes the first new line (at the position 190). I checked what value is occupying that position (taking into account the 8 bits of the double), and there is the 10 (ASCII equivalent to new line), in the sixth position of the 24th double-precision value. Exactly the first value which becomes corrupted when reading the data.

请先登录,再进行评论。

采纳的回答

James Tursa
James Tursa 2016-4-20
编辑:James Tursa 2016-4-20
Don't open the file as a text file with 'wt'. Instead, open it as binary by leaving off the 't' part. E.g.,
fid = fopen('asdf.txt','w');
(And, since it is a binary file you would probably use a different file extension other than .txt)

更多回答(0 个)

产品

Community Treasure Hunt

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

Start Hunting!

Translated by