在Matlab中绘制更多区域之间的边界

时间:2018-03-19 14:28:08

标签: matlab plot

我有一个数组,其中包含一个相图的结果,如果我有三个类别可能是

phases = [1 1 1 1 2 2 2 2; ... 1 1 1 2 2 2 2 2; ... 1 1 2 2 2 2 2 2; ... 3 3 3 3 3 3 3 3; ... 3 3 3 3 3 3 3 3];

我想在这三个如此定义的区域之间自动画一条分界线,这样最终的图像只包含两条​​线 - 一条划分区域1和2,一条划分区域1/2和区域3。 p>

最好的解释是我想要一张图片 enter image description here

但删除了彩色贴片,而只是围绕这三个区域勾勒出轮廓。

到目前为止,我已尝试使用contour(x,y,phases,[1 1])并为每个阶段执行单个绘图。这给出了沿边界的平行线,并且在更多区域相交的点处,我不能取两个值的平均值。

phases = [1 1 1 1 2 2 2 2; ...
1 1 1 2 2 2 2 2; ...
1 1 2 2 2 2 2 2; ...
3 3 3 3 3 3 3 3; ...
3 3 3 3 3 3 3 3];

[x,y] = meshgrid(1:8, 1:5);

hold on
contour(x,y,phases,[1 1])
contour(x,y,phases,[2 2])
contour(x,y,phases,[3 3])

这给出了结果 enter image description here

即,有一条线标记3的区域的“最下面”边界,另一条线找到级别1和3之间的内插值以创建值为2的轮廓。但对于相图,这留下这些线之间的区域是空的。

我还尝试在每个阶段的二进制数组中拆分数组,并使用bwboundaries得到相同的结果。

有没有人有任何想法?

0 个答案:

没有答案