1

私は問題を抱えています。多分あなたは私を助けることができるでしょう。タイトルのように、対称レンズの断面データ (座標s=-100:1:100と高さy) があり、レンズ全体の 3D プロットを作成したいと考えています(x,y,z)。それを助けるビルドイン機能はありますか?事前に助けてくれてありがとう!

4

2 に答える 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

それ以上の仕様 ( y2D マトリックスまたは 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 に答える