Matlab:读取奇怪的lat lon格式时迷失了

时间:2011-03-21 15:39:58

标签: matlab latitude-longitude

我喜欢在Matlab中使用此file来阅读石油平台的位置。我从here获取了该文件。 “Platform.gen”看起来像这样:

Id Lat Lon
1 0.100000000000000D + 02 0.890000000000000D + 02
2 -0.941577040000000D + 02 0.294488400000000D + 02
3 -0.941241560000000D + 02 0.292748680000000D + 02
4 -0.941225830000000D + 02 0.292251370000000D + 02
5 -0.943647730000000D + 02 0.292845940000000D + 02

我使用以下方法将其读入Matlab:

  

[id lat   lon] = textread('platform.gen','%s%s   %S');

但是,我对如何解码lat / lon值感到迷茫...帮助?

1 个答案:

答案 0 :(得分:2)

我建议改为使用转换说明符%f来读取值。这将自动处理双精度浮点数的格式。字符D只是展示scientific notation的另一种方式,因此0.10D+0210的双精度:

>> [id,lat,lon] = textread('platform.gen','%u %f %f','headerlines',1)

id =

     1
     2
     3
     4
     5

lat =

   10.0000
  -94.1577
  -94.1242
  -94.1226
  -94.3648

lon =

   89.0000
   29.4488
   29.2749
   29.2251
   29.2846

此外,函数TEXTREAD将在未来的MATLAB版本中删除,转而使用TEXTSCAN,您可以这样使用:

>> fid = fopen('platform.gen','r');
>> data = textscan(fid,'%f %f %f','HeaderLines',1,'CollectOutput',true);
>> fclose(fid);
>> data{1}

ans =

    1.0000   10.0000   89.0000
    2.0000  -94.1577   29.4488
    3.0000  -94.1242   29.2749
    4.0000  -94.1226   29.2251
    5.0000  -94.3648   29.2846