登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
闲话少叙,之前我在绘制流矢量图时,最常用的函数就是 quiver(),在使用的过程中,碰到了一些问题,最大一个就是矢量密度的问题,比如我的点比较密集的时候,出来的图是这样的
密密麻麻的,实在有点难看出东西来,但从上图也隐约看出来对马暖流、黄海暖流和西朝鲜沿岸流的大体流动结构,再多的就没有了
quiver() 函数没有自带的 density 属性,所以想要调节矢量显示的密度,一般都会采用 meshgrid() 和 griddata() 重新定义绘图网格,以及插值到网格上,这个实现也比较简单,就是要一遍遍的去尝试,怎么说,总能试出满意的效果
早年我在写本科毕业的时候(早年这个词用的妙呀),还用过 quiversc() 这个函数,它里面定义了一个 density 属性,可以用来调整流矢量的密度,这函数是在 Climate Data Toolbox 工具箱里的(chadagreene/CDT: The Climate Data Toolbox for MATLAB (github.com)),by the way,这个工具箱里面还有许多实用的函数
使用 quiversc() 的话,只需要改动一下 density 属性就能实现密度调整效果,就不用再次重新定义网格了,虽然 quiversc() 里面也是这样子做的
我给画了三种密度大小,尴尬,好像效果也并不是很好,但没关系,总归有些进步
像在 density=100 的时候,可以很清楚的看到黄海暖流的分支,和分支的路径,哦对,这份流速数据的 FVCOM 模型跑出来的,本身就带有一些数值误差,但觉得还好,不要在意小细节
其实上面的内容是在阐述我接下来这样做的原因,就感觉直接用直来直去的箭头不太能够表达出流场的复杂结构,个人看法而已,也怪我对这种图形不够熟练,所以想,那就换一种方式呈现呗,于是乎,发现别人画的流线图蛮有意思的,于是我也画了画,主要是用了 m_map 工具箱里的 m_streamline() 函数
可以看到,效果蛮不错的,by the way,m_streamline() 里也用 density 属性在控制流线密度,怎么说呢,好用的函数千篇一律
上面的图给我一种感觉就是线太长,让我有点难理,能不能把线改短一些呢?感觉应该能做,但我因为不太熟悉这个函数,也不知道要咋样去做,转头一想,要不索性自己来写一个,因为感觉在技术层面上看,并没有太大的难度,所以说做就做
经过一通操作,捣鼓出来 plot_stream() 函数,by the way,我觉得这个函数名不错,先上结果(实在是上传图片大小有限制,我把分辨率调低了,还裁了一下,附件里有完整的图片)
可以看到,我给每条短流线按流速的大小用了不同的颜色,主要是用 m_colmap() 函数定义出 colors,流线计算是用了 stream2() 函数,原谅我并不懂其他的函数,所以我用的是循环的方式,一条一条的挨个画,还有就是箭头部分,主要的根据每条短流线 End - 1 和 End 两个点来画的,函数中的theta 和 ratio 也是相对于这两个点的连线来定义的,具体如下图所示,手画而已,勿cue
其实,只根据后面两个点来画箭头部分,会出现一些小问题,就是流线太弯,箭头太直了,但我不想再搞了,等以后吧,主要是我觉得这个问题能够接受,不太像问题
还有一个是,如果遇到下面这种报错,不妨将坐标和流速都转置一下,然后再用这个函数,具体原因是 stream2() 出的,不太能怪我
回到 plot_stream() 画出的结果,很明显呀,黄海暖流、沿岸流什么的,渤海里面也是,都可以比较清晰的看出来,而且用短流线图,在分析路径时更方便,这也是写这个函数的原因,当然当然,都是个人见解,无所谓啦,看什么图不重要,重要的是能看出来
今天的12月19,期末时节,主要是前天刚考完高描,得缓一缓,但感觉老躺宿舍里也不像回事儿,所以来到办公室摸鱼写了写,下个月还有几门考试,开学时,导师让看的论文还剩几篇,倒是准备去学车,能让人提起点兴致
最后祝我,也祝你变得更强!干就完了,欧里给!
|