Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在matlab上绘制三维不等式_Matlab_3d_Plot_Inequalities - Fatal编程技术网

如何在matlab上绘制三维不等式

如何在matlab上绘制三维不等式,matlab,3d,plot,inequalities,Matlab,3d,Plot,Inequalities,我想在MATLAB中绘制一个由一组不等式限定的3d区域 例如: 0 <= x <= 1 sqrt(x) <= y <= 1 0 <= z <= 1 - y 0您可以执行与链接到的2d案例几乎相同的操作。只需写下三个不等式,使用3d网格,将每个不等式与一组具有唯一子集和的三个数(例如2、4、8)中的一个数相乘,然后使用scatter3: [X,Y,Z]=meshgrid(0:0.1:1,0:0.1:1,0:0.1:1); % Make a grid of

我想在MATLAB中绘制一个由一组不等式限定的3d区域

例如:

0 <= x <= 1

sqrt(x) <= y <= 1

0 <= z <= 1 - y

0您可以执行与链接到的2d案例几乎相同的操作。只需写下三个不等式,使用3d网格,将每个不等式与一组具有唯一子集和的三个数(例如2、4、8)中的一个数相乘,然后使用scatter3:

[X,Y,Z]=meshgrid(0:0.1:1,0:0.1:1,0:0.1:1); % Make a grid of points between 0 and 1
p1=0.1; p2=0.2; % Choose some parameters
ineq1 = (X >= 0 & X <= 1) * 2;
ineq2 = (X >= sqrt(X) & Y <= 1) * 4;
ineq3 = (Z >= 0 & Z <= 1 - Y) * 8;
colors = zeros(size(X))+ineq1+ineq2+ineq3;
scatter3(X(:),Y(:),Z(:),3,colors(:),'filled')
[X,Y,Z]=meshgrid(0:0.1:1,0:0.1:1,0:0.1:1);%在0和1之间创建点栅格
p1=0.1;p2=0.2;%选择一些参数

ineq1=(X>=0&X=sqrt(X)&Y=0&Z我一直在尝试解决同样的问题,诀窍是将所有不在交点处的东西的大小设为0。Tobold的scatter3线使用“3”作为大小选项,这意味着所有点都将显示为点3。这可以用一组大小替换为与X1大小相等的矩阵。最简单的方法是just使s=3*全部:

all = ineq1 & ineq2 & ineq3;
colors = zeros(size(X))+all;
sizes = 3 * all;
scatter3(X1(:),Y1(:),Z1(:),sizes,colors(:)','filled')
这样你就到了十字路口

--
编辑:颜色变量也需要更改。您只需要交集,而不是其他不等式。

我不理解您编写的代码中的一些内容,这些内容是对@Tobold帮助的修改。例如,参数p1和p2在代码中的作用是什么

无论如何,代码只绘制满足所有不等式的网格点

[X,Y,Z]=meshgrid(0:0.1:1,0:0.1:1,0:0.1:1);
ineq1 = (X >= 0 & X <= 1);
ineq2 = (Y >= sqrt(X) & Y <= 1);
ineq3 = (Z >= 0 & Z <= 1 - Y);
all = ineq1 & ineq2 & ineq3;
scatter3(X(all),Y(all),Z(all),'b','filled')
[X,Y,Z]=meshgrid(0:0.1:1,0:0.1:1,0:0.1:1);

ineq1=(X>=0&X=sqrt(X)&Y=0&Z我感谢您的帮助,并试图通过将绘制的点限制为所有3个区域定义的点来改进代码,但结果并不理想。请参阅上面我编辑的文章。
[X,Y,Z]=meshgrid(0:0.1:1,0:0.1:1,0:0.1:1);
ineq1 = (X >= 0 & X <= 1);
ineq2 = (Y >= sqrt(X) & Y <= 1);
ineq3 = (Z >= 0 & Z <= 1 - Y);
all = ineq1 & ineq2 & ineq3;
scatter3(X(all),Y(all),Z(all),'b','filled')