在matlab中读取具有重复数据块的文本文件



我有一个如下格式的文本文件:

3
x=         0.10000   3    s
A      -1.554489099     -6.345000000      0.55574511
A       6.346000000     -0.134800000      4.45454546
V      -1.666613300     -6.333453600     -2.11111145
3
x=         0.20000   3    s
A       7.777755558     -4.033333330     -5.323232323
A       8.122322238     -5.007007007      2.045467754
V      -2.443366723     -5.222333337     -6.868889099
3

第一行主要是空格和一个数字,第二行有一个我想要聚合的变量(x=某个数字),并忽略该行的其余部分,接下来的3行有我也想以数组形式聚合的所有变量(a, a,V),这样重复了一遍又一遍。

我想阅读这个文本文件,这样我将有一个向量(1xn)的x值,和一个3D数组(3x3xn)的a, a,V值作为x的函数。

我所尝试的是使用fgetl(fid)逐行读取,但这给了我每行一个我无法使用的字符向量。我也尝试过dlmread,但文件结构在这里不起作用。

我如何以我可以使用的形式读取这样的文本文件?

所以在strsplit的帮助下,这是我得到的解决方案:(如果我能做得更好,请告诉我)

fid = fopen(fn);
n=0;
while true  
tline = fgetl(fid);
if ~ischar(tline); break; end   %end of file
n=n+1;
c{n}=strsplit(tline);
end

Names={c{3}{1},c{4}{1},c{5}{1}}; % the A A V
k=0;
for n=2:5:numel(c)
k=k+1;    
x(k)=str2num(c{n}{3});
for j=1:numel(Names)
AAV(j,:,k)=  cell2mat(cellfun(@str2num,c{n+j}(2:4),'un',0));
end
end

相关内容

  • 没有找到相关文章

最新更新