我正在尝试在matlab中读取一个文本文件,该文件包含多个测试中存储的数据:
x1 x2 y
1 2 5
2 4 7
3 2 1
...
x1 x2 y
5 6 8
2 9 0
3 6 7
...
x1 x2 y
-1 4 3.5
6.4 3.6 3
3 6 7.4
...
如果我重复多次列标题,我将如何在matlab中阅读?我尝试使用importdata但它只读取第一个标题和与第一个标题相关的数据。
感谢您的帮助!
答案 0 :(得分:1)
这是一个想法,有点笨拙但有效:
创建一个包含行的临时数组:
fid=fopen('YourFile.txt');
Rows = textscan(fid,'%s', 'delimiter','\n');
fclose(fid);
通过检测x
字符来查找每个数据集的开头:
DataStarts=strfind(Rows{1,1},'x');
DataIdx = find(~cellfun('isempty', DataStarts));
现在,您可以使用DataIdx
中的索引之间的间隔提取行。
Columns= cellfun(@(x) textscan(x,'%f','delimiter','\t','CollectOutput',1), Rows{1,1});
Columns= cellfun(@transpose, Columns, 'UniformOutput', 0);
for j=1:size(DataIdx)-1
Data{j}=cell2mat(Columns(DataIdx(j)+1:DataIdx(j+1)-1));
end
Data{j+1}=cell2mat(Columns(DataIdx(size(DataIdx))+1:size(Rows{1,1})));
单个数据集现在存储在单元格数组Data
中。
Data =
[3x3 double] [3x3 double] [3x3 double]