我有两个参数或坐标x和y,还有一个量E(x,y,p),它是这两个参数的函数,但还取决于状态矩阵p。对于状态p,我有一些离散的选项-例如p1,p2,p3 ...-对于每对(x,y),我都会进行一些计算,以找出p中的哪些可能的状态会使E(x,y, p)。
获得这些信息后,我想制作一个2D图,其中点(x,y)周围的区域被着色,例如如果状态p1最小化为E,则绿色,如果状态p2最小化为E,则为蓝色,等等。
我可能还没有想到做这件事的简单方法。在专业地块中,我没有找到一个很好的方法,但是我在理解一些可能与之相关的东西时遇到了麻烦,例如pcolor和补丁。有关如何执行此操作的任何建议?
我想到的最好的方法是使用带有用于控制颜色的z值的surf,然后对3D图进行自顶向下的视图以获取所需的2D图。不过,这似乎是一种笨拙的做事方式。
答案 0 :(得分:0)
我毕竟能够用pcolor完成这项工作。我为最小化Emin(x,y)=E(x,y,p)
的{{1}}定义了p
,然后将其命名为E(x,y,p)
。我可以通过调用pcolor(Emin)
在轴上添加刻度线,其中pcolor(xvec,yvec,Emin)
是所用xvec
的不同值的数组,等等。
x
的工作原理是根据pcolor
和xvec
定义的顶点对单元格进行着色,或者如果未给出顶点,则根据yvec
的索引为单元格着色不会将单元格放在与该值相对应的坐标上居中。例如,如果我计算Emin
并调用Emin(1,2)=5
,则颜色对应于5的单元格的角将位于坐标(1,2)。我可以通过将pcolor(Emin)
和xvec
移动一个单元格宽度的一半来解决此问题。例如,对于单位宽度的像元,该值为yvec
。 xvec = xvec - 0.5
的最后一行和最后一列未显示,但是我可以通过向其添加一个虚拟行和列来解决此问题。
在适当的情况下,我只使用线性间隔的Emin
和xvec
,所以如果有其他合并间距的情况我可以避免。
希望这对阅读我发现的yvec
文档有困难的其他人都有意义。