导入带有空格和制表符分隔符的matlab

时间:2018-05-15 08:25:56

标签: matlab file-import

我需要将一个txt文件导入到具有此格式的Matlab中

text text text           
1           0 1 2 3
            4 5 6 7
2           10 11 15 18
            15 1 18 3

第一列用制表符分隔符与第二列分隔,而其余数据用空格分隔。 我尝试使用它导入它:

g = importdata('file.txt',delimiterIn,headerlinesIn);
delimiterIn = ' ';
headerlinesIn = 1;

然后提取的表格如下:

text text text  
1 0 1 2 3
4 5 6 7 nan
2 10 11 15 18
15 1 18 3 nan

我想要的是一个维护格式的表,g.data的第一列独立,然后是所有其他。

我想要一个像

这样的输出矩阵
1 0 1 2 3
  4 5 6 7
2 10 11 15 18
  15 1 18 3

然后,如果我需要在第一列中提取2表示的数据,我可以将其放入另一个具有值的矩阵

10 11 15 18
15 1 18 3

矩阵单元格内的每个数字

我该怎么做?

2 个答案:

答案 0 :(得分:1)

可能有点过于务实,但这可能会有所帮助:

for i=1:size(A,1)
  if isnan(A(i,end))==1
    A(i,2:end) = A(i,1:4);
    A(i,1) = NaN;
  end
end

for i=1:size(A,1)
  if A(i,1)==2
    B = A(i:i+1,2:end);
  end
end

答案 1 :(得分:1)

溶剂可能是:

fid = fopen('test.txt');
M = {[]};Midx=1;
l = fgetl(fid); %header
l = fgetl(fid);
while ~isnumeric(l)
    idx = str2double(l(1));
    if ~isnan(idx)
        Midx=idx;
        M{Midx}=[];
        l = l(2:end);
    end
    val = cell2mat(textscan(l,'%f'))';
    M{Midx}=[M{Midx};val];
    l=fgetl(fid);
end
fclose(fid);