Вложенные текстовые сообщения - PullRequest
3 голосов
/ 21 января 2012

Следующие два оператора читают первую строку из входного файла (fid) и анализируют указанную строку в строки, разделенные пробелами.

a = textscan(fid,'%s',1,'Delimiter','\n');
b = textscan(a{1}{1},'%s');

Я хотел бы знать, можно ли выполнить это действиев единственном утверждении, имеющем форму, подобную следующей (что синтаксически неверно).

b = textscan(textscan(fid,'%s',1,'Delimiter','\n'),'%s');

Спасибо.

1 Ответ

2 голосов
/ 24 января 2012

вместо

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

если вам нужен этот дополнительный клеточный слой.

...