如何绘制自定义函数的等高线?

发布于 2024-09-24 21:00:00 字数 392 浏览 8 评论 0原文

我有一个自定义函数,它根据两个给定的输入返回 01

function val = myFunction(val1, val2)

  % logic to determine if val=1 or val=0

end

How can I create acontourplot of the function over the x,y< /code> 由以下网格生成的坐标?

meshgrid(0:.5:3, 0:.5:3);

该图将仅显示函数在等高线图上的 01 位置。

I have a custom function which returns either 0 or 1 depending on two given inputs:

function val = myFunction(val1, val2)

  % logic to determine if val=1 or val=0

end

How can I create a contour plot of the function over the x,y coordinates generated by the following meshgrid?

meshgrid(0:.5:3, 0:.5:3);

This plot will just simply display where the function is 0 or 1 on the contour map.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

櫻之舞 2024-10-01 21:00:00

如果您的函数 myFunction 未设计用于处理矩阵输入,那么您可以使用函数 ARRAYFUN 将其应用于 xy 的所有相应条目:

[x,y] = meshgrid(0:0.5:3);      %# Create a mesh of x and y points
z = arrayfun(@myFunction,x,y);  %# Compute z (same size as x and y)

然后您可以使用函数 CONTOUR 为上述数据生成等高线图。由于您的 z 数据只有 2 个不同的值,因此您可能只绘制一个等高线级别(其值为 0.5,位于两个值之间的中间)是有意义的。您可能还想使用函数 CONTOURF,它会产生颜色 -填充轮廓将清楚地显示 1 和 0 的位置:

contourf(x,y,z,1);  %# Plots 1 contour level, filling the area on either
                    %#   side with different color

注意:由于您绘制的数据只有 1 和 0,因此绘制等值线可能不是可视化数据的最佳方式。我会使用类似函数 IMAGESC 的函数,如下

imagesc(x(1,:),y(:,1),z);

所示 :请注意,该图中的 y 轴将相对于 CONTOURF< 生成的图反转/a>.

If your function myFunction is not designed to handle matrix inputs, then you can use the function ARRAYFUN to apply it to all the corresponding entries of x and y:

[x,y] = meshgrid(0:0.5:3);      %# Create a mesh of x and y points
z = arrayfun(@myFunction,x,y);  %# Compute z (same size as x and y)

Then you could use the function CONTOUR to generate a contour plot for the above data. Since your z data only has 2 different values, it would probably make sense for you to only plot one contour level (which would be at a value of 0.5, halfway between your two values). You might also want to instead use the function CONTOURF, which produces color-filled contours that will clearly show where the ones and zeroes are:

contourf(x,y,z,1);  %# Plots 1 contour level, filling the area on either
                    %#   side with different color

NOTE: Since you are plotting data that only has ones and zeroes, plotting contours may not be the best way to visualize it. I would instead use something like the function IMAGESC, like so:

imagesc(x(1,:),y(:,1),z);

Keep in mind the y-axis in this plot will be reversed relative to the plot generated by CONTOURF.

拥抱我好吗 2024-10-01 21:00:00

以下将做到这一点:

function bincontour
    clear; clc;

    xrange = 0:.5:3;
    yrange = 1:.5:5;
    [xmesh, ymesh] = meshgrid(xrange, yrange);
    z = arrayfun(@myFunction, xmesh, ymesh);

    contourf(xrange, yrange, z, 5)
end

function val = myFunction(val1, val2)
    val = rand() > 0.5;
end

The following will do it:

function bincontour
    clear; clc;

    xrange = 0:.5:3;
    yrange = 1:.5:5;
    [xmesh, ymesh] = meshgrid(xrange, yrange);
    z = arrayfun(@myFunction, xmesh, ymesh);

    contourf(xrange, yrange, z, 5)
end

function val = myFunction(val1, val2)
    val = rand() > 0.5;
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文