我正在尝试编写一个MATLAB脚本来给我一个等值线图。必须根据我从100张图像生成的输入创建等高线图。
故事是这样的:
我有100张图片,我运行了一个图像处理算法进行优化。现在,我得到了他们的能量曲线。所以,我有100条能量曲线。我想创建一个等高线图,它将显示我在图上更密集的点。 (能量曲线被绘制为能量与迭代的固定迭代次数)
以下是我的变量:
energy(iteration,numImages)
希望我解释得很清楚。
提前致谢。
答案 0 :(得分:0)
从我所看到的图形(以及使用注释),一种可能的方法是使用plot3为每个绘图绘制3D线条。
为此,您可以使用以下代码:
contour(aexp) %outside the for loop,
给予 我有一些情节选择。它始终从XY视图绘制。我手动更改了,但您可以使用view command。请注意,我使用一个简单的计数器来在 z 方向上建立间距。
以类似的方式,您可以使用轮廓进行绘图。对于我的代码,在for循环中生成数据后,删除/注释plot3并添加:
qq
请注意,我并没有真正照顾我正在密谋的内容。您可以在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曲面图。