0
t = 0:%pi/50:10*%pi;
plot3d(sin(t),cos(t),t)

このコードを実行すると、プロットは完了しますが、線は表示されず、ボックスのみが表示されます。私が変更しなければならないプロパティはありますか?

ありがとう

4

1 に答える 1

1

この場合、3 番目の引数は、サイズ (長さ arg1) x (長さ arg2) の行列でなければなりません。

andplot3dの拡張のように振る舞うことを期待するでしょうが、そうではありません。plotplot2d

2D プロットは、x のベクトルと y のベクトルを取り、(x1,y1)、(x2,y2) などの点を、線で結合するか、スタイル設定に従って結合しないでプロットします。これは、2D プロットに通常使用する概念モデルに適合します。ほとんどの場合 (y = f(x))、あるものの関係を別の関数として表します。2D プロットを使用する他の方法があります。散布図は一般的ですが、2 行のデータの概念を使用して作成するのは簡単です。

3D プロットを使用してデータを表す方法は他にもたくさんあるため、これはスムーズに 3D に拡張されません。座標の 3 つのベクトルを指定し、それらすべての間に線を引くように要求した場合、それを何に使用したいのでしょうか? それが 3D プロットを使用する最も便利な方法ですか?

ほとんどのパッケージは、さまざまな種類のデータに対してさまざまな視覚化タイプを提供します。Mathematica には多くの 3D 可視化タイプがあり、Python/Scipy/Mayavi2 にはさらに多くの種類があります。Matlab にも番号がありますが、Scilab は通常 Matlab をミラーリングしますが、この場合はplot3d関数ですべてを処理することを好みます。

私はこれを等高線図のように考えています。x のベクトルと y のベクトルを与え、それらを使用して (x,y) 点のグリッドを作成します。3 番目の引数は、各点の z 座標を保持する (x,y) グリッドの次元と一致する次元を持つ行列です。ドキュメントの最初の例は、私があなたが求めていると思うことを行います:

t=[0:0.3:2*%pi]';
z=sin(t)*cos(t');
plot3d(t,t,z);

最初の行は、長さ 21 の列ベクトルを作成します

-->size(t)
 ans  =

    21.    1.  

2 行目は、sin(t) と cos(t) の順列の積の 21 x 21 行列を計算しcos(t')ます。要素の転置に注意してください。

-->size(z)
 ans  =

    21.    21.  

次に、それらをプロットすると、(x1,y1,z11)、(x1,y2,x12)、(x2,y2,z22) などが描画されます。メッシュ内の隣接するポイント間に線を描画するか、線を描画しないか、サーフェスのみを描画します。

于 2013-01-10T11:17:58.947 に答える