以下两个语句从输入文件 (fid
) 中读取第一行,并将该行解析为由空格分隔的字符串。
a = textscan(fid,'%s',1,'Delimiter','\n');
b = textscan(a{1}{1},'%s');
我想知道此操作是否可以在单个语句中完成,其形式类似于以下内容(在语法上无效)。
b = textscan(textscan(fid,'%s',1,'Delimiter','\n'),'%s');
谢谢。
最佳答案
而不是
a = textscan(fid, '%s', 1, 'Delimiter', '\n');
你可以使用
a = fgetl(fid);
这会将 fid
中的下一行作为字符串返回(末尾的换行符被删除)。然后,您可以将该行拆分为空格分隔的 block ,如下所示:
b = regexp(a, '\s*', 'split');
综合:
b = regexp(fgetl(fid), '\s*', 'split');
请注意,这并不 100% 等同于您的代码,因为使用 textscan
添加了另一个单元格层(代表文件中的不同行)。但这不是问题,只需使用
b = {regexp(fgetl(fid), '\s*', 'split')};
如果您需要额外的细胞层。
关于matlab - 嵌套文本扫描语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8950112/