私は問題を抱えています。多分あなたは私を助けることができるでしょう。タイトルのように、対称レンズの断面データ (座標s=-100:1:100
と高さy
) があり、レンズ全体の 3D プロットを作成したいと考えています(x,y,z)
。それを助けるビルドイン機能はありますか?事前に助けてくれてありがとう!
質問する
955 次
2 に答える
0
私の理解が正しければ、円の周りを効果的に「スイープ」して 3 次元プロットを生成したい 1 次元配列があります。これを行う方法の例を次に示します
% Some dummy data
Npts = 100;
z = sin(linspace(0, pi, Npts));
Nreps = 100; % How many times to repeat around circle
% Create polar meshgrid and convert to Cartesian
[r, theta] = meshgrid( ...
linspace(-length(z)/2, length(z)/2, Npts), ...
linspace(0, pi, Nreps));
[X, Y] = pol2cart(theta, r);
% Copy data Nreps times
Z = repmat(z, Nreps, 1);
% Plot!
surf(X, Y, Z)
于 2013-05-22T13:36:00.730 に答える
0
それ以上の仕様 ( y
2D マトリックスまたは 1D 配列など) がなければ、正確な答えを出すことはできません。ただし、Matlab でサーフェスを描画する方法は次のとおりです。
% create a meshgrid used as the independent variables of your surface
[sx, sy] = meshgrid(-100:100);
% if you have your own 2D matrix, ignore this line.
% if you have a formula, replace this line with your own formula
y = cos(sqrt(((sx/100).^2+(sy/100).^2)/2)*(pi/2));
% draw the surface
surf(sx, sy, y);
反対側も同様にするには、同じ図に別の波を描きます。
hold on;
surf(sx, sy, -y);
于 2013-05-22T13:16:53.677 に答える