Интерполяция (кригинг?) Данных сетки в MATLAB - PullRequest
0 голосов
/ 21 апреля 2019

У меня есть данные Lat, Lon и NO2, которые находятся в сетке. Я пытаюсь выбрать несколько точек из этих данных и интерполировать некоторые данные / график, сравнивая, как эти интерполированные данные / график улучшаются по мере их интерполяции.

Мои данные следующие:

Лат - размер 336x264 Размер Lon 336x264 NO2 (:,:, 1,12) (переменная, которую я буду использовать) имеет размер 336x264, причем первые два измерения - соответственно широта и долгота.

Например, lat (1,1), lon (1,1) и NO2 (1,1,1,12) соответствуют.

В настоящее время для интерполяции этих данных я использую код:

plot (interpn (lat (100: 130), lon (100: 130), no2 (100: 130,100: 130,1,12), lat, lon, «кубическая интерполяция»))

В настоящее время для интерполяции этих данных я использую следующий код, чтобы попытаться интерполировать всю фигуру, используя только данные в сетке в точках от 100 до 130 по обеим осям.

plot(interpn(lat(100:130),lon(100:130),no2(100:130,100:130,1,12),lat,lon,'cubic interpolation'))

Мой текущий результат - следующий рисунок:

enter image description here

Я бы предпочел привести что-то похожее на эту фигуру, которая является реальной картой правильного сюжета

 geoshow(lat,lon,NO2(:,:,1,12),'DisplayType','Surface')

enter image description here

У меня два серьезных вопроса:

  1. Правильно ли я выбираю данные? Вероятно, нет, поэтому если нет, то как бы я указал только 100-> 130 всех данных в сетке и интерполировал их?
  2. Как я могу интерполировать, чтобы получить аналогичный результат? Я использую неправильные команды для этой цели?

Спасибо!

...