MATLAB:从textfile获取变量

时间:2016-02-16 14:25:18

标签: matlab file

我一直在尝试从我在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字符串。他确实找到了它,但它给出的值是[]。

有人能给我一个提示吗?谢谢。

2 个答案:

答案 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