在Matlab中将文件解析为struct数组

时间:2012-05-14 16:11:48

标签: parsing matlab struct

我有一个包含以下信息的文件:

id   allele1 allele2
1    A A
2    T A
3    A A
.    ...
.    ...
.    ...

我想将文件解析为包含三个字段(id, allele1, allele2)的结构数组,其中id是从1到n的所有数字,allele1是第一列字符,allele2是第二列。

然而,我无法弄清楚如何去做这件事。

1 个答案:

答案 0 :(得分:1)

将来,最好展示你尝试过的东西。但是,这应该可以让你开始。

fid = fopen('input.txt','r');

%header line
line = fgetl(fid);
header = regexpi(line,'\W+','split');

ID=1;

%read first line
line = fgetl(fid);

while ischar(line)

   l = regexpi(line,'\W+','split');

   for i=1:numel(l)
       data(ID).(header{i}) = l(i);
   end
    ID = ID+1;
    line = fgetl(fid);
end
fclose(fid);

导致:

>> data

data = 

1x4 struct array with fields:
    id
    allele1
    allele2

>> data(1)

ans = 

         id: {'1'}
    allele1: {'A'}
    allele2: {'A'}

>> data(2)

ans = 

         id: {'2'}
    allele1: {'T'}
    allele2: {'A'}