我一直在尝试从我在Matlab工作区中读取的文本文件中获取变量。
该文件包含以下内容:
---------------------------------------------------------------
Surface Forces (referred to Sref,Cref,Bref about Xref,Yref,Zref)
Standard axis orientation, X fwd, Z down
Sref = 35.00 Cref = 2.4325 Bref = 14.5000
Xref = 18.5306 Yref = 0.0000 Zref = -0.7092
n Area CL CD Cm CY Cn Cl CDi CDv
1 35.263 0.6972 0.0138 4.8547 0.0040 0.0069 -0.2817 0.0138 0.0000 F27 WING
Surface Forces (referred to Ssurf, Cave about root LE on hinge axis)
n Ssurf Cave cl cd cdv cm_LE
1 35.263 2.432 0.6920 0.0137 0.0000 0.0000 F27 WING
---------------------------------------------------------------
我需要低于CL的值,在这种情况下是0.6972。我尝试过使用fopen和importdata而没有成功。 importdata只将整个文件放在一个包含9行和1列包含所有字符串的单元格数组中。从那里我不知道如何进一步。
有了fopen,我试图逐行读取文件并检查他是否找到了CL字符串。他确实找到了它,但它给出的值是[]。
有人能给我一个提示吗?谢谢。
答案 0 :(得分:0)
如果您有使用其中一个较新版本的Matlab,那么以下内容将起作用。
B = readtable('test.dat'),'Delimiter','\t');
c = regexp(B{9,:}, ' ','split');
CL_vec = c{1,1};
CL_cell = CL_vec(13);
Wing_CL = str2num(CL_cell{1,1});
答案 1 :(得分:0)
使用fgetl()提取你不需要的行,然后使用fscanf()将一行数据读入一个向量(' dataline')。然后,您可以访问向量的各个元素。
基于您的文件的示例:
打开并读取文件,丢弃前7行,包括空行:
fid = fopen(filename, 'r')
for i = 1:7
oneline = fgetl(fid);
end
阅读第8行文件;存储在浮动的向量
dataline = fscanf(fid, ['%f' ])
将向量的第三个值分配给' CL'
CL = dataline(3)
fclose(fid)
CL
ans =
0.6972