3

不等式のセットから制限されたMATLABの3D領域をプロットしたいと思います。

例えば:

0 <= x <= 1

sqrt(x) <= y <= 1

0 <= z <= 1 - y

このサイトで誰かが行った2Dの例を見つけましたが、それを3Dに変換する方法がわかりません。不等式をプロットする方法

編集:@Toboldのヘルプから、プロットされるポイントを3つの領域すべてによって定義されるポイントに制限するようにコードを変更しましたが、プロットされるのは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')
4

3 に答える 3

0

リンクした2dの場合とほぼ同じことができます。3つの不等式を書き留め、3Dメッシュグリッドを使用し、各不等式に一意のサブセット和(2、4、8など)を持つ3つの数値のセットからの数値を乗算し、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')
于 2012-09-18T12:23:58.970 に答える
0

私は同じことを理解しようとしてきましたが、コツは交差点0にないすべてのサイズを作成することです。Toboldのscatter3ラインは、サイズのオプションとして「3」を使用します。つまり、すべてのポイントがポイント3として表示されます。 。これは、サイズのセットを使用して、X1と同じサイズのマトリックスの代わりに使用できます。これを行う最も簡単な方法は、s = 3*allにすることです。

all = ineq1 & ineq2 & ineq3;
colors = zeros(size(X))+all;
sizes = 3 * all;
scatter3(X1(:),Y1(:),Z1(:),sizes,colors(:)','filled')

これで、交差点のエリアだけが表示されます。

--編集:色変数も変更する必要があります。他の不等式ではなく、交差点が必要です。

于 2013-02-24T17:50:30.000 に答える