MATLAB绘制不同图中的等高线图

时间:2017-08-15 15:34:15

标签: matlab plot matlab-figure contour

我正在尝试编写一个MATLAB脚本来给我一个等值线图。必须根据我从100张图像生成的输入创建等高线图。

故事是这样的:

我有100张图片,我运行了一个图像处理算法进行优化。现在,我得到了他们的能量曲线。所以,我有100条能量曲线。我想创建一个等高线图,它将显示我在图上更密集的点。 (能量曲线被绘制为能量与迭代的固定迭代次数)

以下是我的变量:

energy(iteration,numImages)

This is the image showing 100 energy curves plotted on the same figure

希望我解释得很清楚。

提前致谢。

2 个答案:

答案 0 :(得分:0)

从我所看到的图形(以及使用注释),一种可能的方法是使用plot3为每个绘图绘制3D线条。

为此,您可以使用以下代码:

contour(aexp) %outside the for loop, 

给予 plot3 plot 我有一些情节选择。它始终从XY视图绘制。我手动更改了,但您可以使用view command。请注意,我使用一个简单的计数器来在 z 方向上建立间距。

以类似的方式,您可以使用轮廓进行绘图。对于我的代码,在for循环中生成数据后,删除/注释plot3并添加:

qq

给予 Contour plot

请注意,我并没有真正照顾我正在密谋的内容。您可以在Matlab page中找到有关轮廓的更多信息。

您评论说,x轴应该是迭代次数,y轴应该是能量,z轴应该是包含从某些区域通过的线数的信息。为此,请创建qq=number_of_lines(number of iterations,energy)变量,即ii。如果没有能量,请为能量制作一个离散网格。无论如何,迭代次数可能是离散的。功能就是你需要设计的功能,但我会选择检查每个能量和每次迭代的行数。在这种情况下,您将拥有依赖于y和x的z函数,即使用轮廓或曲面的情况。

上面的我的函数为每个{{1}}点创建一条线,以获得3d函数。另一个额外循环的版本并不难。记住每个点都有相同的常规网格,否则你会遇到麻烦。

答案 1 :(得分:0)

我将您的问题解释为如何根据energy中找到的能量创建颜色的曲面图。我将使用contour函数和使用meshgrid生成的网格来解决此问题。如果每个图像在包含100个文件的1000个数据点中描述,则可以按如下方式生成图:

% using stuff as random junk instead of energy
numPoints = 1000;
numFiles = 100;
stuff = rand(1000,100); % replace with actual information
[X, Y] = meshgrid(1:numFiles, 1:numPoints);
contour(X,Y,stuff);

您还可以使用surf和相同的逻辑创建3D曲面图。