Matlab --- matlab を使用して 3 次元座標系で 3 次元ベクトルを描画する方法

MATLAB を使用した 3D ベクトルの描画

        2 日前、グラム・シュミット直交化の記事を書いたときに、直交化されていない元のベクトルと 3 次元座標で直交化された直交基底を matlab を使って結合するのが最善ではないかと考えました。システムでは、画像で表現されます。このようにして、ベクトル間の内積を計算してベクトルが「直交している」ことを証明するのではなく、ベクトルとベクトルの間の「直交性」をより直感的に確認できます。

        実際、私はこれまでに何度も 3 次元座標系で描画する必要に迫られたことがありましたが、あまり適切な座標系を見つけたことがありませんでした。たとえば、3D 座標系での点の描画などです。今回、3次元ベクトルを描画しているときに、3次元座標系で1つまたは複数の3次元ベクトルを描画する問題を実現できる関数 quiver3() を偶然見つけました。

1. まず、quiver3 関数を使用してベクトル v=[1, 2, 8] を描画します。

まず、ベクトルの座標原点を [0,0,0] として定義します。

X=[0];
Y=[0];
Z=[0];

3次元ベクトルを定義する

U=[1];
V=[2];
W=[8];

描く

figure;
quiver3(X,Y,Z,U,V,W,0,'LineWidth',1)

このうち、「W」の後のパラメータ「0」は、画像内のベクトルの長さのスケーリングを示します (2 などの正の整数のみにすることができます。これは、画像内のベクトルの長さが 2 倍であることを意味します)実際のベクトルの長さ)、上記の構文のスケールです。一般に、スケール パラメーターを入力しない場合 (たとえば、quiver3(X,Y,Z,U,V,W) を直接使用する場合)、MATLAB はイメージを美しくするためにベクトルの長さを自動的に適切にスケールします。したがって、画像に入力したベクトルを「1:1」の比率で描画するには、scaleパラメータをオフにする必要があり、これをオフにする方法は、scale=0、つまりoffに設定することです。(デフォルトは自動です)

「LineWidth」は画像内の線の幅を表します。通常は設定する必要はありません。ここでは見やすくするために1と書きました。デフォルト値は0.5または0.7です。とにかく太くないです。 1として。

最終的に次の画像が得られますが、scale=0 の効果を示すために、デフォルト値のscale=auto の画像も示します。

ベクトル [1, 2, 8] の xy 平面への投影

 ベクトル [1, 2, 8] の xz 平面への投影

        上図の比較図からわかるように、scale=0、つまりオートスケールがオフの場合(上図の右側)。x、y、z の各方向のベクトルの長さは実際の入力と一致していますが、オートスケール (上の図の左側) の場合、ベクトルの長さが短縮されることがわかります。右の写真と比較すると、一定の割合で表示されます。

これは、MATLAB の公式ドキュメントにある「Scale」パラメーターの説明と部分的な図です。

最後に次のように入力します。

axis equal

        彼は、各座標軸に統一された標準スケールを使用して描画するようにしました。つまり、matlab が quiver3 を使用してベクター グラフィックスを描画するとき、デフォルトで座標軸も異なる度数でスケールします。そのため、この例では、ベクトル [1 , 2, 8] を見ると、図では x、y、z の 3 方向の矢印の長さがほぼ同じであるように見えます。Z 方向のスケールは 0、2、4、6、8 (赤色)、X 軸のスケールは 0、0.2、0.4、0.6、0.8、1 (黄色)、Y 方向のスケールは-axis は 0、0.5、1、1.5、2 (青) です。

 「軸が等しい」と入力すると、ベクトルは x、y、z の各軸で同じサイズの標準スケールを使用するため、ベクトル [1、2、8] の方向も非常に正確になります。下の図。

2. quiver3 関数を使用して 2 つのベクトル v1=[1,1,1]、v2=[1,3,5] を描画します

        同様に、最初に 2 つのベクトルの座標原点 [0,0,0] をそれぞれ定義します。ここで、X、Y、Z の最初の要素は最初のベクトル v1 の開始座標を表し、2 番目の要素は最初の開始座標です。 2 つのベクトル v2 の座標。

X=[0,0];
Y=[0,0];
Z=[0,0];

        次に、2つのベクトルv1、v2を入力します。同様に、v1の3つの値がそれぞれU、V、Wの最初の要素に格納され、v2の3つの値がU、V、Wに配置されます。 2 番目の要素。

U=[1,1];
V=[1,3];
W=[1,5];

描く 

figure;
quiver3(X,Y,Z,U,V,W,0,'LineWidth',1)
legend('v1,v2','Location','northwest')

        このうち、関数 legend() は画像に説明文を追加するために使用されます。グラフ内で 2 つのベクトルを区別し、異なる色で表現したい場合は、以前の 1 つのベクトルを描画する方法と同様に、1 つずつ描画する必要があります。

X=[0];
Y=[0];
Z=[0];
U=[1];
V=[1];
W=[1];

quiver3(X,Y,Z,U,V,W,0,'LineWidth',1)
axis equal
hold on

U=[1];
V=[3];
W=[5];
quiver3(X,Y,Z,U,V,W,0,'LineWidth',1)
axis equal
legend('v1','v2','Location','northwest')

2 つのベクトルの色は、パラメーター color で個別に指定することもできます。「r」は赤、「k」は黒です。

X=[0];
Y=[0];
Z=[0];
U=[1];
V=[1];
W=[1];

quiver3(X,Y,Z,U,V,W,0,'LineWidth',1,'Color','r')
axis equal
hold on

U=[1];
V=[3];
W=[5];
quiver3(X,Y,Z,U,V,W,0,'LineWidth',1,'Color','k')
axis equal
legend('v1','v2','Location','northwest')

他のカスタムカラーを使用したい場合は、次の手順を参照してください。

3. quiver3 を使用して複数のベクトルのセットを描画し、異なる色を使用してそれらを表現します

%plot b
X=[0];
Y=[0];
Z=[0];
U=[1];
V=[3];
W=[5];
quiver3(X,Y,Z,U,V,W,0,'LineWidth',1)
axis equal

%plot x,y,z
X=[0,0,0];
Y=[0,0,0];
Z=[0,0,0];
U=[1,0,0];
V=[0,1,0];
W=[0,0,1];
quiver3(X,Y,Z,U,V,W,0,'LineWidth',1)
axis equal

%plot projection of b
X=[0];
Y=[0];
Z=[0];
U=[1];
V=[3];
W=[0];
quiver3(X,Y,Z,U,V,W,0,'LineWidth',1)
axis equal

legend('vector b','x,y,z','projection','Location','northwest')

図に示すように、同じピクチャ内に 3 セットのベクトルを描画しました。

1、ベクトル b、

2、xyz 軸上の単位ベクトル

3. ベクトル b の xy 平面への投影。 


(全文)

著者 --- パナソニック J27

参考文献(感謝):

1. 3 次元の矢印図またはベクトル図 - MATLAB quiver3 - MathWorks 日本

(添付画像は本記事とは関係ありません)

著作権に関する声明:この記事内の一部の写真、テキスト、またはその他の資料は、さまざまな Web サイトや説明から引用されている可能性があるため、ここに記載することはできません。侵害がある場合は、私に知らせてすぐに削除してください。転載はどなたでも歓迎ですが、私の記事を引用・コピーする場合は、使用している写真や文章が私の記事から引用したものであることを記事内で明記していただく必要があり、そうでない場合は権利侵害として調査させていただきます。----パナソニック J27

おすすめ

転載: blog.csdn.net/daduzimama/article/details/130812421