You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MATLAB中限制函数定义域为多边形并绘制该函数?

在MATLAB中限制函数定义域为多边形并绘制的方法

要实现将函数限制在指定多边形内部绘制,核心就是利用inpolygon筛选出多边形内的网格点,将外部点的函数值设为NaN(MATLAB绘图会自动忽略这类值)。以下是针对你给出的示例的完整实现步骤:

步骤1:定义函数与多边形顶点

先明确要绘制的函数和多边形的顶点坐标:

% 定义目标函数
f = @(x,y) x.*y;
% 多边形顶点按顺序排列(顺时针/逆时针均可)
poly_verts = [0 0; 1 0; 2 2; 0 1];
x_verts = poly_verts(:, 1);
y_verts = poly_verts(:, 2);

步骤2:生成覆盖多边形的网格点

为了绘制连续的函数图像,需要生成覆盖多边形范围的x-y网格:

% 确定x、y轴的范围,确保覆盖整个多边形
x_range = linspace(min(x_verts), max(x_verts), 200);
y_range = linspace(min(y_verts), max(y_verts), 200);
[X, Y] = meshgrid(x_range, y_range);

步骤3:筛选多边形内部点并处理函数值

用inpolygon判断每个网格点是否在多边形内部,然后将外部点的函数值设为NaN:

% 计算所有网格点的函数值
Z = f(X, Y);
% 标记多边形内部的网格点
is_inside = inpolygon(X, Y, x_verts, y_verts);
% 将外部点的函数值置为NaN,绘图时会自动隐藏
Z(~is_inside) = NaN;

步骤4:绘制图像并添加边界

可以选择曲面图、等高线图等不同类型的绘图方式,以下是曲面图的示例:

figure;
% 绘制函数曲面,关闭边缘线让图像更平滑
surf(X, Y, Z, 'EdgeColor', 'none');
hold on;
% 绘制多边形边界(闭合)
plot([x_verts; x_verts(1)], [y_verts; y_verts(1)], 'r-', 'LineWidth', 2);
% 设置标签与标题
xlabel('x');
ylabel('y');
zlabel('f(x,y)');
title('f(x,y)=xy 在指定多边形内的图像');
grid on;
axis tight;

如果你更倾向于等高线填充图,只需把surf替换为contourf(X, Y, Z, 20)即可,其中20代表等高线的数量。

内容的提问来源于stack exchange,提问作者Davide

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 19:17:08