Matlab-读取不规则文本文件

Matlab-读取不规则文本文件,matlab,file,text,Matlab,File,Text,如何在matlab中读取包含以下文本的文本文件 B4070IC05.tif,11 B4070IC06.tif,11,15,16,6,7 B4070IC07.tif,13,14,4,18,9 B4070IC08.tif,10,7 B4070IC09.tif,4,22,7 B4070IC10.tif,14,15,19,20,24,29,9 B4070IC11.tif,10,11,20,21 B4070IC12.tif,13,14,5,9 我不知道文本的列数 有没有办法将这些数据放入单元格矩阵中?

如何在matlab中读取包含以下文本的文本文件

B4070IC05.tif,11
B4070IC06.tif,11,15,16,6,7 
B4070IC07.tif,13,14,4,18,9
B4070IC08.tif,10,7
B4070IC09.tif,4,22,7
B4070IC10.tif,14,15,19,20,24,29,9
B4070IC11.tif,10,11,20,21
B4070IC12.tif,13,14,5,9
我不知道文本的列数


有没有办法将这些数据放入单元格矩阵中?数据加载后如何打印单元格矩阵?

您可以使用
textscan
进行此操作。确保
%f
-s的长度足以覆盖文件中最长的值系列。如果所有数值都是整数,则还可以使用实例“%d”(有关详细信息,请参阅)

结果是一个单元格数组,第一列是字符串“blabla.tif”,第二列是最后一列的数值。如果文件中不存在值,则它等于
NaN

通过
A{i}(j)
访问第i列的第j个值


顺便说一下,文件中的最后一行不像其他行那样附加了nan。这意味着无法直接将结果合并到单元格数组中:最后几个数组(可能)比第一个数组短。我没有找到明显的解决方案,因此我们必须手动执行:

idx = find(diff(arrayfun(@(idx)numel(A{idx}),1:numel(A))));
cA = [A{1} num2cell([horzcat(A{2:idx}) [horzcat(A{idx+1:end});nan(1,numel(A)-idx)]])];
idx = find(diff(arrayfun(@(idx)numel(A{idx}),1:numel(A))));
cA = [A{1} num2cell([horzcat(A{2:idx}) [horzcat(A{idx+1:end});nan(1,numel(A)-idx)]])];