如何在MATLAB中将此文本文件制作成列表?
我有一个文本文件,希望将其导入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 上面有几百个这样的条目。每个都用一个空行分隔。我想我可以扫描文本,将每一个空行之间的信息变成列表中的一个项目。我也希望能够查找每个人的名字,一旦我有一个类似下面的名单 我想要像这样的东西:
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