3

この関数をプロットする必要がありますここに画像の説明を入力してください

theta = (-pi:0.01:pi);
f = 3*10^9;
c = 299792458;
da = 2;

これが私のコードですが、それが正しいかどうかはわかりません。ドットマークがどこにあるべきかわかりません。X軸をデグレスに設定するにはどうすればよいですか?

beta = (2*pi*f)/c;
const= (da*beta)/2; 
j= (cos(theta)+1).*(besselj(1,const*sin(theta))./(const*sin(theta)));

私のもう1つの質問は、この関数を極座標でプロットする方法です。

私はこのようなものを作りました。

polar(theta,j);

その関数を(y軸で)回転させて3Dプロットを取得することは可能ですか?

4

1 に答える 1

2

シンボルは虚数単位()のシンボルであるjため、変数としては使用しませんが、物事は私にはまったく正しいです。そうすることであなたはそれを上書きしているので、複素数が必要なくなるまで物事はうまくいくでしょう。isqrt(-1)

.*を取得するために正しく行ったように、配列エントリを要素ごとに結合することを目的とする場合は、()などの要素ごとの操作を使用する必要がありますF(\theta)。実際にcos(theta)は、などに含まれる角度の余弦定理の配列ですtheta

Rotate 3D最後に、プロットウィンドウのコマンドを使用してプロットを回転させることができます。それでも、2D曲線(F(\theta))があるので、2Dグラフを回転させ続けて、ある種の透視図を取得します。それ以上のことはありません。本物の情報を取得するには、追加の従属変数が必要です(または、私はあなたの質問を誤解しましたか?)。ここに画像の説明を入力してください

編集:今、私はあなたのポイントを見る、あなたはある軸の周りの回転面を望んでいる、それはその中の対称性のおかげであると私は思うtheta=0。回転面は、少しの解析幾何学によって取得し、たとえばを使用してプロットすることができますmesh。これをチェックしてください:

  % // 2D polar coordinate radius (your j)
  Rad= (cos(theta)+1).*(besselj(1,const*sin(theta))./(const*sin(theta)));
  Rad = abs(Rad);  % // We need its absolute value for sake of clarity


  xv = Rad .* cos(theta);  % // 2D Cartesian coordinates
  yv = Rad .* sin(theta);  % // 2D Cartesian coordinates

  phi = -pi:.01:pi;        % // 3D revolution angle around theta = 0

  % // 3D points of the surface
  xf = repmat(xv',size(phi)); 
  yf = yv' * cos(phi);
  zf = yv' * sin(phi);

  mesh(xf,yf,zf)

ここに画像の説明を入力してください

グラフィック効果を追加することもできます

ここに画像の説明を入力してください

これは経由で行われます

mesh(xf,yf,zf,'FaceColor','interp','FaceLighting','phong')
camlight right

そしてより細かい角度の離散化(1e-3)

于 2013-01-05T15:27:01.460 に答える