从Matlab读取文本文件时查找特定字符串所在的行

时间:2011-11-19 01:25:05

标签: string matlab text file-io textscan

我有一个文本文件,其中包含字符串周围的连续整数值。这个文件看起来像这样:

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

我想要做的是将字符串之间的值打到单独的数组中。也就是说,从'For y = COLUMN 1'到'COLUMN 1 meas'将被调到ArrayA,从'For y = COLUMN 2 we have'到'END of COLUMN 2 meas'到ArrayB等等

之后,我需要找到'x'的所有值并将它们存储到名为ArrayX的字符串数组中。也就是说,这应该是这样的:

ArrayX =

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

如果有人可以提供帮助,我将非常感激。

1 个答案:

答案 0 :(得分:0)

我不确定您是否仍然需要此信息,但我遇到同样的问题并为此找到了此解决方案;

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,并且使用循环完成相同的方式。