我想繪製一個由一組不等式組成的MATLAB區域。如何在matlab上繪製3d不等式
例如:
0 <= x <= 1
sqrt(x) <= y <= 1
0 <= z <= 1 - y
我發現了一個2D的例子,有人已經在這個網站這樣做,但我不知道如何將其轉換成3D。 How to plot inequalities。
編輯: From @ Tobold的幫助我修改了代碼,將繪製的點限制爲由所有三個區域定義的那些點,但它只繪製了2或3個點。看起來向量X1,Y1和Z1中的點是正確的,但由於某種原因,它只繪製了幾個點。任何想法爲什麼它只繪製X1,Y1和Z1向量中的幾個點而不是所有的點?
[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
X1 = (X >= 0 & X <= 1) & (Y >= sqrt(X) & Y <= 1) & (Z >= 0 & Z <= 1 - Y);
Y1 = (X >= 0 & X <= 1) & (Y >= sqrt(X) & Y <= 1) & (Z >= 0 & Z <= 1 - Y);
Z1 = (X >= 0 & X <= 1) & (Y >= sqrt(X) & Y <= 1) & (Z >= 0 & Z <= 1 - Y);
ineq1 = (X >= 0 & X <= 1) * 2;
ineq2 = (Y >= sqrt(X) & Y <= 1) * 4;
ineq3 = (Z >= 0 & Z <= 1 - Y) * 8;
all = ineq1 & ineq2 & ineq3;
colors = zeros(size(X))+ineq1+ineq2+ineq3;
scatter3(X1(:),Y1(:),Z1(:),3,colors(:)','filled')
我感謝您的幫助,並試圖通過將繪製的點限制爲由所有3個區域定義的點來改進您的代碼,但結果不符合要求。看到我上面編輯的帖子。 – user1680079