在MATLAB中从文件读取时指定数据类型

时间:2013-09-16 17:31:20

标签: java file matlab input types

我试图通过文本文件将实验收集的数据读入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指定正确数据类型的问题,但我不确定。

有什么想法吗?

2 个答案:

答案 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);