读取空间界定文本文件matlab的最简单方法



好吧,所以我在挣扎着最平凡的事物,我有一个空间划界的文本文件,第一行中的标头和每个观察结果,我想打开该文件在MATLAB中。如果我在r中这样做,我根本没有问题,它将创建最基本的矩阵和瞧!

但是Matlab似乎很烦人...

文本文件的示例:

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

我可以得到类似矩阵的东西吗?然后,我想让MATLAB通过进行data(1,2)来删除一些数据。

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

如果您有足够的新版本的MATLAB(我相信R2013B ),则可以使用readtable,这很像R的方法:

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

有许多功能来操纵表和在它们之间来回转换和其他数据类型(例如单元格数组)。

统计工具箱的数据导入和导出部分中还有其他一些选项,这些选项应在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{:}

找到了解决我的问题的方法。

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

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

@horchler的textscan解决方案似乎非常相似。谢谢!

最新更新