需要插入分散的lat lon温度数据和图

时间:2017-12-14 09:40:30

标签: matlab interpolation

我在特定时间有一个N x 3数据集。这些是散布数据,它们的间距不相等。

从我到目前为止所看到的,似乎imagesc(),meshgrid(),scatteredInterpolant(虽然我听说这对地理插值有问题)是需要的功能。我需要以十进制度绘制地图。最后,创建不同时间的地图并在时间上制作动画。

我怎么能在MATLAB中执行此操作?

1 个答案:

答案 0 :(得分:1)

如此接近!您可以使用geoshow.显示地图代码中的两个拼写错误也必须修复:

% some sample data, located in europe
data = [randi([-10 30],10,1) randi([30 50],10,1) rand(10,1)];

lat = data(:,1);
lon = data(:,2);
temp = data(:,3); % : not ;
lon0 = min(lon) ; lon1 = max(lon) ;
lat0 = min(lat) ; lat1 = max(lat) ; 
N = 100 ;
x = linspace(lon0,lon1,N) ;
y = linspace(lat0,lat1,N) ; % lat0, not lon1
[X,Y] = meshgrid(x,y) ;
F = scatteredInterpolant(lon,lat,temp) ;
Z = F(X,Y) ;

worldmap('World') 
load coastlines    
plotm(coastlat,coastlon)
geoshow(X,Y,Z,'DisplayType', 'texturemap') % options give it a nice colormap for temperature - but you might want to change them to something more of your taste

现在,要控制插值分辨率,只需调整点数:

spacing = 0.1;
x = linspace(lon0,lon1-mod(abs(lon0-lon1),spacing), floor(abs(lon0-lon1)/spacing)+1) ;
y = linspace(lat0,lat1-mod(abs(lat0-lat1),spacing), floor(abs(lat0-lat1)/spacing)+1) ;

如果你想制作一部电影,只需把整个东西放在一个循环中。在循环结束时,使用以下内容保存每个帧:

M(k) = getframe;

然后您可以使用movie(M,PlayMovieNTimes,FramesPerSecond)播放电影,或使用videowriter将其保存到您的驱动器中 - 请参阅那里的示例。