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')};