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

标签 matlab function plot contour

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

function val = myFunction(val1, val2)

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

end

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

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

此图将仅显示等值线图上函数为 01 的位置。

最佳答案

如果您的函数 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 生成的图反转.

关于matlab - 如何等高线绘制自定义函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3784059/

相关文章:

r - 如果你已经有了 Rstudio,那么 RTVS 有什么用?

C# - Windows 窗体中的简单二维图形绘制

matlab - 如何为 MATLAB errorbar plot 的点和垂直线设置不同的图例?

c - 函数中的链表

c++ - 在 MATLAB MEX 库中使用 boost,与 MATLAB 的版本不同

c++ - 当函数按值传递参数时,复制构造函数如何工作?

javascript - lodash 的过滤函数是否带上下文?

python - matplotlib scatterplot(horizo​​ntal stem plot)中从x=0到数据点绘制水平线

matlab - 检测分段常数信号中的阶跃

matlab - 基于特定用户选择维数的子数组