0

我正在尝试通过文本文件将实验收集的数据读入 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但我不确定。

有任何想法吗?

4

2 回答 2

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{:}));
于 2013-09-16T19:32:48.063 回答
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);
于 2013-09-16T17:43:24.833 回答