2015-05-29 82 views
0

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

注意一下第三列得有点“粘”到第二列

任何帮助将是赞赏,因为我有点卡住,不知道如何自动做到这一点。也许你们可以为我提供一段代码来做到这一点。

在此先感谢!

Balraj

+0

都是这样的列总是固定的宽度? – nkjt

+0

查看'textscan'。 – 2015-05-29 14:09:33

+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; 
+0

我遇到以下错误:错误:文件:test2.m行:31列:12 意外的MATLAB表达式。 –

+0

@BalrajBoyal原来的帖子中有一个缺失的逗号,我纠正了它。请再看看答案。 – 2015-05-29 14:50:24

+0

@BalrajBoyal任何反馈? – 2015-05-29 14:54:45

相关问题