Как я могу прочитать несколько строк в Matlab с TextScan?
Я использовал это:
weights=fopen('indices.txt');
weights=textscan(weights, '%d %d %d %d %d %d %d')
но это только читает первую строку моего файла. мой файл выглядит так:
0 90 100 5 0 0 0 (class)
19 5 0 0 0 0 0 (class2)
5 5 0 0 0 0 0 (class3)
-10 -5 0 0 0 0 0 (class4)
И мне не нужно, что в скобках
Большое спасибо!
2 ответа
Для этого случая вы можете сделать следующее:
fid = fopen('indices.txt');
num_ints = 7;
num_rows = 4;
format = [repmat('%d ', 1, num_ints), '%s'];
weights = textscan(fid, format, num_rows);
weights = [weights{1:num_ints}];
fclose(fid);
Недостатком, конечно, является то, что вы должны знать количество строк, которые вы читаете заранее. Вы могли бы попытаться вызвать текстовое сканирование в цикле, но, похоже, это не то, как оно должно использоваться (и я предпочел бы использовать fgetl вместо этого, если я пытаюсь читать файл построчно).
Используйте следующее:
fh = fopen('indices.txt');
resC = textscan(fh, '%d %d %d %d %d %d %d %s', 1000);
res = cell2mat(resC(1:7))
fclose(fh);
textscan
будет только читать (и возвращать) до доступного количества строк. Обратите внимание, что textscan
выделяет память для количества строк, которые вы предоставляете (1000 здесь), так что вы хотите выбрать что-то "мудрое" там.