Хранение данных в отдельных массивах после появления определенных строк в текстовом файле. - PullRequest
0 голосов
/ 18 ноября 2011

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

Формат текстового файла похож на следующий:

This is the set for x = 100
---------------------------

For y=COLUMN 1 we have
1232
3ff3
4a45
23d4
5323
...
...
END of COLUMN 1 meas

For y=COLUMN 2 we have
1232
3c43
4545
2d24
5a23
...
...
END of COLUMN 2 meas

This is the set for x = 200
---------------------------

For y=COLUMN 1 we have
2b23
1232
d387
6f74
4c47
...
...
END of COLUMN 1 meas

For y=COLUMN 2 we have
354d
a546
3c63
5a46
a349
...
...
END of COLUMN 2 meas

This is the set for x = 530
---------------------------
..........
..........

Как видите, для каждого нового значения X я получаю отдельный набор данных для "y = COLUMN 1" и для "y = COLUMN 2". Я хочу сохранить эти наборы данных (два «у») в отдельных (1,2) массивах, по одному для каждого значения X. В идеале это будет выглядеть так:

Array_for_x_100(1,1)=[data for "y=COLUMN 1"]
Array_for_x_100(1,2)=[data for "y=COLUMN 2"]

Array_for_x_200(1,1)=[data for "y=COLUMN 1"]
Array_for_x_200(1,2)=[data for "y=COLUMN 2"]

..........
..........

То, что я думал, было использование текстового сканирования для этого, но я немного запутался, как его использовать. Я как-то должен хранить диапазон значений, появившихся между конкретными строками (например, хранить значения появляются 3 строки после строки «Это набор для x = 100» до строки «END of COLUMN 1 measure» и т. Д.).

Если кто-то может помочь, я буду очень признателен.

1 Ответ

0 голосов
/ 18 ноября 2011

Попробуйте настроить параметры TextScan

fid = fopen([opath filename]);
K = textscan(fid,'%f %f %f %f ',...    
    'CommentStyle','For',...
    'CommentStyle','This',...
    'CommentStyle','End',...
    'Delimiter',',\t',...
    'MultipleDelimsAsOne',1);
fclose(fid);

K = cell2mat(K);

Вы можете настроить его, найти дополнительные параметры для управления вводом и т. Д. Но это должно сработать, немного пота на вашей стороне

...