在MATLAB中以不同高度在3D轴上绘制不同的2D椭圆

时间:2016-01-29 02:32:59

标签: matlab physics

我想在不同的高度(z坐标)绘制不同的椭圆。

我的想法是编写以下代码:

z=0:1/64:3/8;
t=linspace(-pi,pi,25);
[t,z]=meshgrid(t,z);
x=cos(-t);
y=cos(-t-4*pi*z);

我希望MATLAB能够读取我的代码:

  

"找到x和y,并绘制相应的高度(z)。通过这样做,加入点,这样你就可以在常数z"上形成一个椭圆。

我不确定我可以在这里使用什么样的功能来做这件事,并希望有人告诉我是否有这样的功能可以完成这项工作或类似的东西。

如果你想知道,我想用两个反向传播光束来描绘光的偏振。

编辑:虽然这与问题draw ellipse and ellipsoid in MATLAB类似,但这个问题并不能解决在3D轴上绘制2D椭圆的问题,这正是我想要做的。

1 个答案:

答案 0 :(得分:3)

这可以通过删除meshgrid并使用普通的旧for循环来解决。

t = linspace(-pi,pi,25);
z = 0:1/64:3/8
f = figure;
hold on;
for i = 1:length(z)
    x=cos(-t); y=cos(-t-4*pi*z(i));
    plot3(x,y,z(i)*ones(length(z),1));
end

原始代码中的问题是您尝试一次性构建椭圆,但每个椭圆仅依赖于单个z值,而不是整个z值数组。

当我运行此代码时,它会生成以下图:

polarized ellipses