好吧,所以我在挣扎着最平凡的事物,我有一个空间划界的文本文件,第一行中的标头和每个观察结果,我想打开该文件在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
解决方案似乎非常相似。谢谢!