如何制作两个变量的分段函数的三维图?

Jam*_*mes 2 matlab plot surface piecewise

我试图在MATLAB中绘制以下函数:

1

目标是将所有不同的条件拼接成一个图形以制作整体CDF图形.到目前为止我尝试的是以下内容:

x=linspace(0,1,20);
y=linspace(0,1,20);
Z=x.^y;
plot3(x,y,Z)
hold on
plot3(x,0,0);
plot3(0,y,0);
Run Code Online (Sandbox Code Playgroud)

我不确定如何绘制图1,x>1, y>1以及是否有一种方法可以使绘图成为这组条件的固体曲面.我已经尝试使用rand()生成器在0和之间生成20多个数字1,这表示变量可以定位的区域.但是,当它是给定区域中的线条散布时,它看起来很麻烦.我宁愿它是一个坚实的表面.

我可以使用特定的命令吗?我在一些例子中看到过Mesh()用于使图形稳固但不确定这是否适用于数据集.

gno*_*ice 5

您可以通过生成常规网格xy值来实现此目的meshgrid,Z使用逻辑索引修改值,并使用以下内容显示结果surf:

% Grid points spanning from -1 to 2 for x and y:
[x, y] = meshgrid(linspace(-1, 2, 91));

% Fill Z with zeroes to start (satisfies condition 1 by default):
Z = zeros(size(x));

% Condition 2:
index = (x >= 0) & (x <= 1) & (y >= 0) & (y <= 1);
Z(index) = x(index).*y(index);

% Condition 3:
index = (x >= 0) & (x <= 1) & (y > 1);
Z(index) = x(index);

% Condition 4:
index = (y >= 0) & (y <= 1) & (x > 1);
Z(index) = y(index);

% Condition 5:
Z((x > 1) & (y > 1)) = 1;

% Plot surface:
surf(x, y, Z, 'EdgeColor', 'none');
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

注意:这假设未指定的条件(如(x < 0y > 1)和(y < 0x > 1))也应为零.