FREAD() help
7 次查看(过去 30 天)
显示 更早的评论
Hi so im trying to use fread in a very simple program. Ive used the following to write 4 numbers into a .txt file:
fid=fopen('data.txt','wt');
fprintf(fid,'%0.0f %0.0f %0.0f %0.0f', 2, 4, 6, 8);
fclose(fid);
Now i want to read the data back in by reopening the file and reading into an array:
fid=fopen('data.txt');
numbers=fread(fid);
now if i output 'numbers' i get some completely random numbers:
[ 50 32 52 32 54 32 56]
What am i doing wrong? I should be getting [2 4 6 8] back?
Also if anyone knows why im getting an output 'ans=0' that would be useful too.
Thanks!
0 个评论
采纳的回答
Jan
2012-4-4
fprintf writes the data as ASCII strings, so you get the string "2 4 6 8" in the file. The binary representation of this string is:
Str = '2 4 6 8';
double(Str)
>> 50 32 52 32 54 32 56
E.g. char(32) is the space character.
Strings written by fprintf are read by fscanf:
fid = fopen('data.txt');
numbers = fscanf(fid, '%f %f %f %f);
fread is thought for reading data written by fwrite.
See also the help and doc for these 4 commands.
0 个评论
更多回答(1 个)
Sean de Wolski
2012-4-4
You have to specify the precision of the numbers you're reading (i.e. double).
You could also look at dlmread and dlmwrite if the whole text file will be numbers.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Text Files 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!