如何从混合字符串数字文本文件中导入数字列

时间:2014-04-07 05:09:07

标签: matlab import text-files

已多次询问此问题的变体,例如here。但是,我似乎无法将此工作用于我的数据。

我有一个包含3列的文本文件。第一列和第三列是浮点数。中间列是字符串。我只对真正获得第一栏感兴趣。

这是我试过的:

filename=fopen('heartbeatn1nn.txt');
A = textscan(filename,'%f','HeaderLines',0);
fclose(filename);

当我这样做时,A只是一个数字 - 列中的第一个元素。我如何获得整列?我也尝试过'.tsv'文件扩展名,结果相同。

也尝试过:

filename=fopen('heartbeatn1nn.txt');
formatSpec='%f';sizeA=[1 Inf];
A = fscanf(filename,formatSpec,sizeA);
fclose(filename);

同样的结果。

文件大小可能有问题吗?不确定有多少行,但可能很多,因为文件大小是1.7M。

1 个答案:

答案 0 :(得分:1)

假设文本文件中的列由单个空格字符分隔,则格式规范应如下所示:

A = textscan(filename,'%f %s %f');

A现在包含完整的文件内容。要获得第一列:

first_col = A{:,1};

或者,您可以告诉textscan使用*选项跳过不需要的字段:

first_col = cell2mat( textscan(filename, '%f %*s %*f') );

这只返回第一列。