我试图通过文本文件将实验收集的数据读入MATLAB。数据是由空格分隔的八列中的所有整数。
我想打开文件,读入数据,然后重塑为代表性数组。
所以,我有:
fileID = fopen('String name of file');
A = fread(fileid);
B = reshape(A, (length(A) / 8), 8);
默认情况下,fread
假设数据是双精度数,但是当我尝试指定整数时,例如fread(fileid, inf, 'int')
,数据仍会显示错误的值。
数据由Java程序输出为“int”并在Linux环境中生成,但现在在Windows中(我只有MATLAB许可证)。我认为这是为fread
指定正确数据类型的问题,但我不确定。
有什么想法吗?
答案 0 :(得分:1)
我不知道使用fread,但是textscan应该可以工作:
% Open file
fid = fopen('file.txt');
% Scan 8 columns of numeric values
tmp = textscan( fid, repmat('%f ', [1 8]));
% Close file handle
fclose(fid);
% Convert to int and join columns into matrix
data = int32(cat(2, tmp{:}));
答案 1 :(得分:0)
使用*int
代替int
。可能尝试int32
或其他与平台无关的语法。来自fread
的手册:
By default, numeric and character values are returned in class
'double' arrays. To return these values stored in classes other
than double, create your PRECISION argument by first specifying
your source format, then following it by '=>', and finally
specifying your destination format. If the source and destination
formats are the same then the following shorthand notation may be
used:
*source
which means:
source=>source
另请注意,您可以使用简化的重塑语法:
B = reshape(A, [], 8);