在Matlab中自动读取包含特殊字符的数据文件

时间:2015-05-29 13:59:15

标签: matlab special-characters

我想在Matlab中导入一个由外部软件自动生成的数据文件。

此数据文件有时会在随机位置的第三列中包含特殊字符。因此,我不能简单地利用dlmread。

我正在弄清楚如何在Matlab中导入此文件自动,同时在矩阵中插入数据。此外,识别特殊字符并用NaN替换它们是必要的。

以下是一些示例数据,可帮助您更好地了解问题:

NACA0012    

Alfa =  25.00000 Re =        0.000 Xflap,Yflap =     0.000000    0.000000

   x      y     Cp  

1.00000  0.00126  0.53803
0.08399  0.04389 -7.27148
0.07278  0.04150 -8.16799
0.03346  0.02983-15.69087
0.02840  0.02771-18.03665
0.02399  0.02566-20.81862
0.00360  0.01041-95.28658
0.00238  0.00851*********
0.00141  0.00659*********
0.00070  0.00467*********
0.00025  0.00277*********
0.00003  0.00091*********
0.00003 -0.00091*********
0.00025 -0.00277-93.41611
0.00070 -0.00467-72.18787
0.00141 -0.00659-51.54605
0.00238 -0.00851-37.04853

注意第三列如何在第二列中“卡住”

任何帮助都会受到赞赏,因为我有点卡住而且不知道如何自动完成。也许你们可以为我提供一段代码来完成它。

提前致谢!

Balraj

1 个答案:

答案 0 :(得分:1)

使用textscan并考虑3个想法:

  • 需要跳过第一行;
  • *字符串将被视为NaN s;
  • 如果出现错误,请关闭文件。

因此代码(假设示例数据在文件'u.txt'中):

try
        f = fopen('u.txt');
        m = textscan( f,                 ...
           '%f%f%f',        Inf,         ...
           'HeaderLines',   6,           ...
           'TreatAsEmpty',  '*********', ...
           'CollectOutput', 1            ...
        );
        fclose(f);

catch ME
        fclose('all');
end;