这是制表符分隔的txt,看起来像
A 2000 a B 2001 b C 1999 c
X 2005 x Y 1995 y
会有数百行这样的行。
我想创建像
这样的矩阵mat1 = [A 2000 a ; B 2001 b ; C 1999 c]
mat2 = [X 2005 x ; Y 1995 y]
如果我只是使用for和if等等,我认为这是可行的。
但是我不确定我是否可以通过使用块转置的更高效的matlab命令来实现它。
答案 0 :(得分:1)
id = fopen('input.txt');
tline = fgetl(id);
ii = 1;
while ischar(tline)
cell_{ii} = cellfun(@(x)(str2double(x)),reshape(regexp(tline,'\t','split')',3,[])');
ii = ii+1;
tline = fgetl(id);
end
fclose(id);
输出矩阵存储在单元格数组cell_
输入文件是
564 564 5646 65466 458 545
785 878 8745 555 547 5665 55966 66588 6654
输出
cell_{1}
ans =
564 564 5646
65466 458 545
cell_{2}
ans =
785 878 8745
555 547 5665
55966 66588 6654