필터 지우기
필터 지우기

How to invert the function typecast?

조회 수: 4 (최근 30일)
Dani Tormo
Dani Tormo 2016년 4월 20일
댓글: Dani Tormo 2016년 4월 21일
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개)

카테고리

Help CenterFile Exchange에서 Workspace Variables and MAT-Files에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by