2012-01-21 2 views
3

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

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

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

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

Спасибо.

ответ

2

Вместо

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

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