Поиск строк, в которых находятся определенные строки при чтении текстового файла из Matlab - PullRequest
0 голосов
/ 19 ноября 2011

У меня есть текстовый файл, который имеет последовательные целочисленные значения вокруг строк. Этот файл выглядит так:

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
---------------------------
..........
..........

То, что я хотел бы сделать, это объединить значения между строками в отдельные массивы. То есть, от «Для y = COLUMN 1, которое у нас есть» до «КОНЕЦ КОЛОННЫ 1 Meas», будет перенесено в ArrayA, от «Для y = COLUMN 2, которое мы имеем», до «КОНЕЦ COLUMN 2 Meas 'в ArrayB и т. Д. .

После этого мне нужно найти все значения fo 'x' и сохранить их в строковом массиве с именем ArrayX. То есть это должно выглядеть так:

ArrayX =

'x=100'    'x=200'    'x=501'

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

1 Ответ

0 голосов
/ 29 октября 2015

Я не уверен, что вам все еще нужна эта информация, но у меня та же проблема, и я нашел для этого решение;

formatSpec = 'This is the set for x = %s\n---------------------------\n\nFor y=COLUMN %s we have\n%s\n%s\n%s\n%s\n%s\nEND of COLUMN 1 meas\n\nFor y=COLUMN 2 we have\n%s\n%s\n%s\n%s\n%s\nEND of COLUMN 2 meas\n\n';
fileID = fopen('new.txt','r');
A = fscanf(fileID,formatSpec,[4 Inf]);
A=A';

Теперь у меня большая матрица со всеми необходимыми символами. Я взял ваши данные и получил это:

A =

1001
1232
3ff3
4a45
23d4
5323
1232
3c43
4545
2d24
5a23
2001
2b23
1232
d387
6f74
4c47
354d
a546
3c63
5a46
a349
530 

Итак, последний шаг - разделить эту матрицу на несколько. Например, для вашего ArrayX:

ArrayX = A(1:11:end,1:3)
ArrayX =

100
200
530

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

...