读取空格分隔文本文件matlab的最简单方法

时间:2014-03-09 20:52:11

标签: matlab text

好的,所以我正在努力应对最平凡的事情,我有一个空格分隔的文本文件,第一行有一个标题,每次观察一行,我想在matlab中打开该文件。如果我在R中这样做我完全没有问题,它将创建最基本的矩阵,瞧!

但MATLAB似乎很烦人......

文本文件示例:

"picFile" "subjCode" "gender"
"train_1" 504 "m"
 etc.

我可以得到像矩阵一样的东西吗?然后,我希望让MATLAB通过执行data(1,2)来提取一些数据。

最简单的方法是什么? 似乎必须使用f型函数编写循环只是浪费时间......

2 个答案:

答案 0 :(得分:4)

如果您有足够新版本的Matlab(R2013b +,我相信),您可以使用readtable,这与R的做法非常相似:

T = readtable('data.txt','Delimiter',' ')

many functions用于操作表格并在它们和其他数据类型(如单元格数组)之间来回转换。

统计工具箱的data import and export部分中还有一些其他选项可用于旧版本的Matlab:

  • tblread:根据字符串和数字的单独变量输出
  • caseread:根据char数组输出
  • tdfread:根据结构输出

或者,textscan应该能够完成你所需要的并且可能是最快的:

fid = fopen('data.txt');
header = textscan(fid,'%s',3);            % Optionally save header names
C = textscan(fid,'%s%d%s','HeaderLines',1); % Read data skipping header
fclose(fid);                                % Don't forget to close file
C{:}

答案 1 :(得分:2)

找到解决问题的方法。

因为我没有最新版本的MATLAB,并且不能使用readable这是我首选的选项,我最终使用textread并指定每列的格式。 乏味但也许是我能找到的“最简单”的方式:

[picFile subCode gender]=textread('data.txt', '%s %f %s', 'headerlines',1);
T=[picFile(:) subCode(:) gender(:)]

textscan solution by @horchler似乎非常相似。谢谢!