在搜索过程中,找到了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)=73x144size(u)=144x73x31 size(v)=144x73x31
对应的行列根本不相等!!!!
这是因为u和v是有31层(也就是z方向啦),所以要做的操作是将u和v的层级剥离出来,我们用在代码中的u和v应该只能是一层
剥离之后就简单了,代码如下
fname = '1.nc';fnameu = 'C:\Users\HWL\PycharmProjects\data\u10\u-2.csv';fnamev = 'C:\Users\HWL\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);figurequiver(lo,la,uwind,vwind,3)
补充:
1、下载的是nc数据
2、剥离过程:
先用panoply(一个查看nc文件的软件)将u和v导出,导出的格式是csv的。
将上面得到的csv进行分层,也就是剥离过程。这是之前写的分层代码
分层得到的是csv,所以读文件是csvread
来一张图
如果觉得《matlab绘制风场图(矢量图 箭头图)》对你有帮助,请点赞、收藏,并留下你的观点哦!