使用未指定的列号在Matlab中读取文本文件

时间:2016-05-12 21:47:06

标签: arrays matlab file-io

假设我有数百行,如下一行:

姓名姓氏1年级2年级3

使用

从文本中获取此数据看起来很容易
[firstName,lastName,grade1,grade2,grade2] = textread(fileName,'%s %s %f %f %f');

但是,如果有些学生有二等名,我该如何阻止这种结构?

1 个答案:

答案 0 :(得分:0)

如果可以确定第二个名称是数据结构的唯一可变部分,则可以使用fgetl()逐行读取并在决定解析方法之前计算逗号数。这是一个例子。你会把整个块放在一个循环中。希望你没有大量的数据要解析。

a = 'John, Smith, 95, 85, 71';
% inline = fgetl(fid);

if length(strfind(a,',')) == 4
    c = textscan(a,'%s %s %f %f %f', 'Delimiter',',');
    first_name = c{1}{1}
    last_name = c{2}{1}
    grades = cell2mat(c(3:5))

elseif length(strfind(a,',')) == 3
    c = textscan(a,'%s %f %f %f', 'Delimiter',',');
    first_name = c{1}{1}
    grades = cell2mat(c(2:4))
end