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

Automatically reading data files containing special characters in Matlab

我想在 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

注意第三列如何'stuck'到第二列

任何帮助将不胜感激,因为我有点卡住了,不知道如何自动完成。也许你们可以给我一段代码来做。

提前致谢!

巴拉吉

使用 textscan 时牢记 3 个想法:

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

因此代码(假设示例数据在文件 '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;