背景说明
在磁重联的研究中(一定不止于这个小范畴内),常常需要在网格信息(比如n/B/E/J)的contour图上,叠加画出磁力线的图像,从而更加全面的理解其中的物理。
streamslice(X,Y,Z,U,V,W,startx,starty,startz) draws well-spaced streamlines (with direction arrows) from vector data U, V, W in axis aligned x-, y-, z-planes at the points in the vectors startx, starty, startz.
The arrays X, Y, and Z, which define the coordinates for U, V, and W, must be monotonic, but do not need to be uniformly spaced. X, Y, and Z must have the same number of elements, as if produced by meshgrid. U, V, W must be m-by-n-by-p volume arrays.
注意事项
在streamslice中,一个非常重要的区别(相比较于imagesc),就是streamslice(X,Y,U,V)中,X、Y都必须是与U、V维度相同的向量。
一般由[X,Y] = meshgrid(U,V)产生。
这基本可以算得上是最容易出错的地方了。
要避免这个问题,最简单的方式,就是尽量多的使用size命令。
[m,n,p] = size(U)
[X,Y,Z] = meshgrid(1:n,1:m,1:p)
这里注意,[X,Y] = meshgrid(U,V)中,U,V的维度刚好对应的是Y,X的维度,而非X,Y的维度。
其他
streamslice(...,density)可以控制磁力线的疏密程度。其默认值为1。想要密一些,就可以设置为2或更高;想要疏一些则可以设置为0.5或其他。(好啰嗦!!!)
h = streamslice(...)可以把磁力线这一系列“线”作为对象,返回给句柄h。这样一来,我们便可以方便的通过set(h,'LineWidth',2.0,...)等等性质,来对这些“线”进行个性化设置。
一点疑问
matlab help文档中,在对streamslice的描述部分里,有下面一段说明:
Do not assume that the flow is parallel to the slice plane. For example, in a stream slice at a constant z, the z component of the vector field W is ignored when you are calculating the streamlines for that plane.
是啥意思???
待补充
经常与streamslice搭配使用的,还有诸如linspace和logspace这样生成一维等差/比数组的函数。
今天来自数院的莫毅师兄见到我在并行计算课程中的第二次作业里面用matlab画出的表面非常浮夸实则弱到爆炸的isosurface图
u_dist_3D.jpg
后,竟然真的以为我很擅长用matlab作图,提出了“如何在maltab里面画出三维球坐标图”这个问题。
在电子加速的研究中,尤其是做辐射这一方面,经常需要画出产生光子的角分布图;此外,在LWFA中,除了高能电子的单能性与带电量之外,散角大小也是很重要的一项指标。
所以事实上,这种极坐标、球坐标图我是经常可以见到的。但因为自己没有亲自动手画过,所以还是需要花时间去想一想这个问题。
补充
在matlab里面画极坐标图,只需要一个简单的命令polar即可。
球坐标则需要自己稍微多写几行代码,网上很多。
然而在极坐标(r, theta)下,如何让坐标轴r以log形式表示,这个问题到现在依然没有找到答案。
一个类似网吧网管的不负责任的答案是:换一个软件吧。因为据说TecPlot的确是可以画这样的图。
秀一个streamslice图:
Streamslice
其中背景的contour图代表了xy平面上的垂直于纸面方向的电流Jz,而图中带有箭头的线则代表了由磁场Bx和By构成的矢量。
可以看到,在x=0&y=0处,磁力线反向交汇,“矢量互相抵消”之后,产生了磁重联现象(Magnetic Reconnection)。另一个重要的表现之一,就是在磁重联区域产生了第三个方向的电流片Jz,伴随着这个电流片的,是巨大的能量耗散区域。从而在这个区域里,磁场的能量转化为粒子(电子、离子)的能量,进而发生辐射。
在天体物理当中,磁重联理论可以很好的解释由各种宇宙探测器探测到的高能X射线、gamma射线、高能粒子等等,所以对磁重联这一物理机制的研究,很重要。
最后再说两句
从macdown里编辑好内容,拷贝到简书上之后,发现“高亮显示”(==X==)的功能没有了;“下划线”功能也变成了“斜体”功能。
才知道markdown原来就仅仅是一个轻量级的标记语言,最最基本的语法包括一小些,然后在不同的平台不同的软件里面又会逐渐添加其个性化的扩展功能。
所以用markdown写一些轻量级的文档,博客文章是没有问题的,方便,快捷。
但是如果觉得markdown可以代替html,CSS,或者更夸张点的说,LaTex,那是不可能的。
最最最最最最最重要的结尾:内容才是硬道理!