我有一个自定义函数,它返回0
或1
取决于两个给定的输入:
function val = myFunction(val1, val2)
% logic to determine if val=1 or val=0
end
如何x,y
在以下网格生成的坐标上创建函数的等高线图?
meshgrid(0:.5:3, 0:.5:3);
该图将仅显示函数所在的位置0
或1
等高线图上的位置。
如果您的函数myFunction
不是为处理矩阵输入而设计的,那么您可以使用函数ARRAYFUNx
将其应用于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)
然后您可以使用函数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生成的图反转。
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