这里是一个想法,有点笨拙但工作:
创建具有行的临时数组:
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]
一个选项是使用'xlsread'。 Matlab不是特别擅长以不同格式阅读混合文本和数字文件:一行标题,然后是数字。 –
xlsread不适用于文本文件。我尝试过这个。谢谢! –
对,我忘了提及你需要先用excel将它们转换成.xls文件。繁琐... –