有些时候,我们需要用matlab读取自定义格式的文本文件。比如有这样一个数据 families.txt:
Bob,32,father;Alice,31,mother;Mike,4,son;Jonh,7,son
Dick,30,father;Judy,30,mother;Sophia,6,daughter
这个文本数据统计了两个家庭的成员,每一行代表一个家庭,家庭的成员用 分号(;) 隔开,每个成员包含了名字、年龄和角色信息,用逗号(,)隔开。因为每个家庭的成员是不一样多的,因此每一行的数据也不一样多。
解析这个格式的思路如下:
1. 利用 fgetl 函数获取一行文本;
2. 利用 strsplit 函数分割字符串;
3. 将数据保存到结构体中,还可以用 num2str 将年龄转换为数字。
fid = fopen('families.txt');
tline = fgetl(fid);
families = [];
family_count = 0;
while tline ~= -1
strs = strsplit(tline, ';'); % 成员之间用分号分割
num = length(strs);
members = [];
for i = 1:num
memberStr = strsplit(strs{i}, ','); % 成员信息用逗号分割
member.name = memberStr{1};
member.age = memberStr