如何在MATLAB中将此文本文件制作成列表?

如何在MATLAB中将此文本文件制作成列表?,matlab,list,file-io,text-files,matlab-struct,Matlab,List,File Io,Text Files,Matlab Struct,我有一个文本文件,希望将其导入MATLAB并将其列为一个列表: Person1 name = steven grade = 11 age= 17 Person2 name = mike grade = 9 age= 15 Person3 name = taylor grade = 11 age= 17 上面有几百个这样的条目。每个都用一个空行分隔。我想我可以扫描文本,将每一个空行之间的信息变成列表中的一个项目。我也希望能够查找每个人的名字,一旦我有一个类似下面的名单 我想要像这样的东西:

我有一个文本文件,希望将其导入MATLAB并将其列为一个列表:

Person1
name = steven
grade = 11
age= 17

Person2
name = mike
grade = 9
age= 15

Person3
name = taylor
grade = 11
age= 17
上面有几百个这样的条目。每个都用一个空行分隔。我想我可以扫描文本,将每一个空行之间的信息变成列表中的一个项目。我也希望能够查找每个人的名字,一旦我有一个类似下面的名单

我想要像这样的东西:

x = [Person1         Person2       Person3      
     name = steven   name = mike   name = taylor
     grade = 11      grade = 9     grade = 11
     age = 17        age = 15      age = 17]

这似乎很直截了当,但到目前为止,我在这方面遇到了麻烦。我可能忽略了什么。有人有什么想法或建议吗?

创建一个带有“姓名”、“等级”和“年龄”字段的“人员”结构


然后将
fgetl
regexp
结合使用,这与您之前提出的关于基因的问题几乎完全相同。

有很多方法可以做到这一点。假设数据文件中的
age
=
之间有一个空格(与其他字段一样),您可以使用:

然后,您可以通过以下方式处理数据,创建一个3乘1结构数组,其中包含字段
'name'
'grade'
、和
'age'

nFields = 3;                                       %# Number of fields/person
fields = peopleData{1}(2:nFields+1);               %# Get the field names
peopleData = reshape(peopleData{2},nFields+1,[]);  %# Reshape the data
peopleData(1,:) = [];                              %# Remove the top row
peopleData(2:nFields,:) = cellfun(@str2double,...  %# Convert strings to numbers
                                  peopleData(2:nFields,:),...
                                  'UniformOutput',false);
x = cell2struct(peopleData,fields,1);              %# Put data in a structure

上述函数使用、、。

是否假定
age
与数据文件中的
=
之间有一个空格?
nFields = 3;                                       %# Number of fields/person
fields = peopleData{1}(2:nFields+1);               %# Get the field names
peopleData = reshape(peopleData{2},nFields+1,[]);  %# Reshape the data
peopleData(1,:) = [];                              %# Remove the top row
peopleData(2:nFields,:) = cellfun(@str2double,...  %# Convert strings to numbers
                                  peopleData(2:nFields,:),...
                                  'UniformOutput',false);
x = cell2struct(peopleData,fields,1);              %# Put data in a structure