2014-11-21 5 views
0

У меня есть файл данных (.txt), который выглядит следующим образом:Чтение текстового файла с переменной длиной строк

A 2.2 5 
B 3.2 0.5 
C 0 2 
A 3 2 B 
A 2 6 C 
B 2.3 4.5 C 

Первые три представляют узлы (имя, feature1, feature2), тогда как последние три представляют связь между каждым узлом (узел A, узел В, узел C). И, как видите, узлы и отношения находятся в другом формате (nodes = string numeric numeric while relations = string, numeric numeric string). В конце я буду строить их на основе их первоначальных особенностей и отношений во времени. Я попробовал пару вещей, но то, что узлы имеют 3 параметра и края, имеет 4 параметра, что затрудняет их решение.

Так что, в основном, я хочу прочитать текстовый файл по строкам, и я хотел бы иметь возможность определять все узлы и иметь все параметры узлов как строковые числовые числовые и определять все отношения, а также заговорите их в конце.

Любая помощь приветствуется.

ответ

1

проверить встроенная функция fgetl.

fid = fopen(filename); 

lineoftext = fgetl(fid); 
while ischar(lineoftext) 
    C = strsplit(strtrim(lineoftext)); % this will be a cell array 
    if length(C) == 3 
     % then it's a node, put code here 
    else 
     % then it's relational, put code here 
    end 
    lineoftext = fgetl(fid); 
end 

fclose(fid); 

Это будет читать одну строку из файла, разбить его на куски текста в массив ячеек, а затем подсчитать количество порций, чтобы увидеть, если это узел или строка отношения. Вы должны будете поместить свой собственный код внутри операторов if. Затем он читает в другой строке и делает это снова и снова. Когда он достигает конца файла, lineoftext = -1 и цикл while заканчивается.

Смежные вопросы