MatLab阻止转置

时间:2014-06-28 06:55:27

标签: matlab

这是制表符分隔的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命令来实现它。

1 个答案:

答案 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