Matlab: потерял при чтении странный формат лат-лон - PullRequest
1 голос
/ 21 марта 2011

Мне нравится читать в местах нефтяных платформ, используя этот файл в Matlab.Я получил файл от здесь ."Platform.gen" выглядит следующим образом:

Идентификатор Lat Lon
1 0.100000000000000D + 02 0.890000000000000D + 02
2 -0.941577040000000D + 02 0.294488400000000D + 02
3 -0.9412415600000+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');

Однако я теряюсь в том, как декодировать широту / долготуценности ... помочь?

1 Ответ

2 голосов
/ 21 марта 2011

Я бы предложил вместо этого использовать спецификатор преобразования %f для чтения значений. Это автоматически обработает формат чисел с плавающей запятой двойной точности. Символ D - это просто еще один способ отображения научной записи , поэтому 0.10D+02 означает 10 с двойной точностью:

>> [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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...