在特定字符串出现在文本文件中后,将数据存储到单独的数组中

时间:2011-11-18 14:32:14

标签: text textscan matlab

我想要一个能够读取文本文件并将每组数据存储到单独数组中的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”的单独数据集。 我想要的是将这些数据集(两个'y')存储到单独的(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"]

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

我认为使用textscan可以做到这一点,但我对如何使用它感到有些困惑。 我不得不存储特定字符串之间出现的值范围(例如存储值出现 “这是x = 100的设置”字符串之后的3行,直到“COLUMN 1 meas的结束”字符串等。)

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

1 个答案:

答案 0 :(得分:0)

尝试调整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);

你可以调整它,找到更多的参数来控制你的输入,等等。但它应该可以工作,你身上有些汗水