m_quiver(nlon,nlat,u_day,v_day,'color','k'); % 添加风场矢量的方向箭头
经纬度用meshgrid处理后与风场参量的维度不一致应该怎么解决啊?麻烦讲一下
回答: 要画出风场分布图,可以使用m_quiver函数。但是经纬度用meshgrid处理后与风场参量维度不一致,需要进行一些处理。
首先,使用meshgrid函数产生经纬度网格点:
[lon,lat] = meshgrid(lon_values,lat_values);
这里的lon_values和lat_values分别表示经纬度的取值范围。
接下来,对于风场分量u和v,也使用meshgrid函数处理成网格点形式,如果只是普通的二维网格图,就可以直接使用m_quiver函数画图了,如下:
m_quiver(lon,lat,u,v);
但风场分布图需要在地图上画出,这时候就需要使用m_map函数库。由于m_quiver函数是在地图上画箭头,所以需要设置箭头的位置和大小。
% 定义箭头位置
[lon,lat,u,v] = deal(lon(1:skip:end,1:skip:end),lat(1:skip:end,1:skip:end),...
u(1:skip:end,1:skip:end),v(1:skip:end,1:skip:end));
% 设置箭头大小
sc = 10;
% 在地图上画箭头
m_quiver(lon,lat,u,v,sc);
其中skip参数用于控制箭头数目,太多的话会影响图像的清晰度,太少的话图像会显得空旷。
最后,使用m_grid函数添加地图边界和坐标轴。
完整代码如下:
% 定义经纬度网格点
[lon,lat] = meshgrid(lon_values,lat_values);
% 定义风场分量u和v
u = ...;
v = ...;
% 设置箭头位置和大小
skip = 20;
[lon,lat,u,v] = deal(lon(1:skip:end,1:skip:end),lat(1:skip:end,1:skip:end),...
u(1:skip:end,1:skip:end),v(1:skip:end,1:skip:end));
sc = 10; % 箭头大小
% 在地图上画箭头
figure;
m_proj('miller');
m_quiver(lon,lat,u,v,sc);
% 添加地图边界和坐标轴
m_coast('color','k');
m_grid('linestyle','none','box','fancy');