好的,所以我正在努力应对最平凡的事情,我有一个空格分隔的文本文件,第一行有一个标题,每次观察一行,我想在matlab中打开该文件。如果我在R中这样做我完全没有问题,它将创建最基本的矩阵,瞧!
但MATLAB似乎很烦人......
文本文件示例:
"picFile" "subjCode" "gender"
"train_1" 504 "m"
etc.
我可以得到像矩阵一样的东西吗?然后,我希望让MATLAB通过执行data(1,2)
来提取一些数据。
最简单的方法是什么? 似乎必须使用f型函数编写循环只是浪费时间......
答案 0 :(得分:4)
如果您有足够新版本的Matlab(R2013b +,我相信),您可以使用readtable
,这与R的做法非常相似:
T = readtable('data.txt','Delimiter',' ')
有many functions用于操作表格并在它们和其他数据类型(如单元格数组)之间来回转换。
统计工具箱的data import and export部分中还有一些其他选项可用于旧版本的Matlab:
或者,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似乎非常相似。谢谢!