如何绘制自定义函数?

Oma*_*mar 3 matlab plot function contour

我有一个自定义函数,它返回01取决于两个给定的输入:

function val = myFunction(val1, val2)

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

end
Run Code Online (Sandbox Code Playgroud)

如何在x,y由以下meshgrid生成的坐标上创建函数的等高线图?

meshgrid(0:.5:3, 0:.5:3);
Run Code Online (Sandbox Code Playgroud)

该图仅显示功能的位置01等高线图上.

gno*_*ice 5

如果你的函数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)
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用函数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
Run Code Online (Sandbox Code Playgroud)


注意:由于您正在绘制仅包含1和0的数据,因此绘制轮廓可能不是可视化的最佳方式.我会使用类似IMAGESC的功能,如下所示:

imagesc(x(1,:),y(:,1),z);
Run Code Online (Sandbox Code Playgroud)

请记住,此图中的y轴将相对于CONTOURF生成的图形反转.