matlab绘制风场图(矢量图、箭头图)

在搜索过程中,找到了MATLAB绘制海面风场图像,但实现过程中,显示出错 m_pcolor (line 43) data(i)=NaN。又是第一次接触matlab,有点儿懵。不过搞了一下午总算搞懂了,记录下菜鸡之路。

绘制的重点在于quiver函数

quiver(x,y,u,v)函数使用箭头来直观的显示矢量场。该调用格式表示通过在(x, y)指定的位置绘制小箭头来表示以该点为起点的向量(u,v)。
x、y、u、v的行数、列数必须对应相等。即x、y、u、v必须是同型矩阵。
需要注意的是,如果x、y不是矩阵,MATLAB会调用meshgrid函数将其扩展。然后再调用quiver函数。在这种情况下,x中元素的个数必须等于u、v的列数,y中元素个数必须等于u、v的行数(否则使用meshgrid扩展后无法满足x、y、u、v是同型矩阵,具体参见meshgrid函数)。

下载到的风场数据的(x,y,u,v)size如下

size(x)=73x144 
size(y)=73x144
size(u)=144x73x31 
size(v)=144x73x31 

对应的行列根本不相等!!!!

这是因为u和v是有31层(也就是z方向啦),所以要做的操作是将u和v的层级剥离出来,我们用在代码中的u和v应该只能是一层

剥离之后就简单了,代码如下

fname = '1.nc';
fnameu = 'C:\Users\2019HWL\PycharmProjects\data\u10\u-2.csv';
fnamev = 'C:\Users\2019HWL\PycharmProjects\data\v10\v-2.csv';
ncFilePath='1.nc';
lon=ncread(ncFilePath,'longitude');%读取经度变量
lat=ncread(ncFilePath,'latitude');%读取纬度变量
uwind = csvread(fnameu);
vwind = csvread(fnamev);
[lo,la]=meshgrid(lon,lat);

figure
quiver(lo,la,uwind,vwind,3)

补充:

1、下载的是nc数据

2、剥离过程:

先用panoply(一个查看nc文件的软件)将u和v导出,导出的格式是csv的。

将上面得到的csv进行分层,也就是剥离过程。这是之前写的分层代码

分层得到的是csv,所以读文件是csvread

来一张图

 

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页