Matlab 嵌套的textscan语句
以下两条语句从输入文件(Matlab 嵌套的textscan语句,matlab,file-io,nested,textscan,Matlab,File Io,Nested,Textscan,以下两条语句从输入文件(fid)读取第一行,并将该行解析为以空格分隔的字符串 a = textscan(fid,'%s',1,'Delimiter','\n'); b = textscan(a{1}{1},'%s'); 我想知道这个动作是否可以在一个语句中完成,其形式类似于下面的语句(这在语法上是无效的) 谢谢。代替 a = textscan(fid, '%s', 1, 'Delimiter', '\n'); 你可以用 a = fgetl(fid); 这将以字符串形式返回fid中的下一行(
fid
)读取第一行,并将该行解析为以空格分隔的字符串
a = textscan(fid,'%s',1,'Delimiter','\n');
b = textscan(a{1}{1},'%s');
我想知道这个动作是否可以在一个语句中完成,其形式类似于下面的语句(这在语法上是无效的)
谢谢。代替
a = textscan(fid, '%s', 1, 'Delimiter', '\n');
你可以用
a = fgetl(fid);
这将以字符串形式返回fid
中的下一行(末尾的换行符被剥离)。然后,可以将该行拆分为空格分隔的块,如下所示:
b = regexp(a, '\s*', 'split');
合并:
b = regexp(fgetl(fid), '\s*', 'split');
请注意,这并不是100%等同于您的代码,因为使用textscan
会添加另一个单元格层(表示文件中的不同行)。不过,这不是问题,只要使用
b = {regexp(fgetl(fid), '\s*', 'split')};
如果你需要额外的细胞层
b = {regexp(fgetl(fid), '\s*', 'split')};