失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > matlab绘制风场图(矢量图 箭头图)

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

时间:2020-09-30 18:18:34

相关推荐

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)=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绘制风场图(矢量图 箭头图)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。