fid = fopen('file');
ind = 1;
line = fgetl(fid); % #get first line
while line ~= -1; % #read until end of file
cont = cellfun(@str2num, strsplit(line, ','));
cont = mat2cell(cont, [1], ones(size(cont,2),1));
C{ind} = cont;
line = fgetl(fid);
ind = ind + 1;
end
fclose(fid);
演示,我的脚本保存为 readin.m :
>> readin
>> C
C =
{1x3 cell} {1x2 cell} {1x4 cell}
>> C{1}
ans =
[45] [56] [22]
>> C{2}
ans =
[44] [12]
>> C{3}
ans =
[12] [23] [56] [76]
>> NBR = {{45,56,22}, {44,12}, {12,23,56,76}};
>> isequal(NBR,C)
ans =
1
2 回答
新答案:
我终于找到了一个不错的解决方案 . 实际上,
importdata
在这里很有帮助,谢谢@Divakar .老答案:
不幸的是
importdata
对于这个任务来说似乎太有限了,我找不到用textscan
读取整个文件然后应用一些cellfun
的好方法 .csvread
存在插入0的问题,其中应该有NaN
值,因此对于实际包含零的数据集不起作用 .所以老式的方式看起来像这样:
演示,我的脚本保存为
readin.m
:您可以使用fgets在matlab中逐行读取文件