Matlab 在3D中绘制圆
基本上我想做一个100个不同半径的圆的3D绘图,每个圆在一个新的高度平面(h)上。每个圆的半径增加(不断增加),h不断增加 我的代码的问题是,我绘制了100*100个圆,而不是像预期的那样仅绘制100个圆Matlab 在3D中绘制圆,matlab,3d,plot,Matlab,3d,Plot,基本上我想做一个100个不同半径的圆的3D绘图,每个圆在一个新的高度平面(h)上。每个圆的半径增加(不断增加),h不断增加 我的代码的问题是,我绘制了100*100个圆,而不是像预期的那样仅绘制100个圆 for r=1:1:100 t=linspace(0,2*pi); x=r*cos(t); y=r*sin(t); for h=100:100:10000 z=h * ones(1, length(t)); p
for r=1:1:100
t=linspace(0,2*pi);
x=r*cos(t);
y=r*sin(t);
for h=100:100:10000
z=h * ones(1, length(t));
plot3(x,y,z);
if r == 1 && h == 100
hold on;
% Enlarge figure to full screen.
set(gcf, 'units','normalized','outerposition',[0 0 1 1]);
end
drawnow;
end
结束你有一个循环在另一个循环中,每个循环有100次迭代,因此你将以
100*100
的东西结束
我建议您删除内部循环,即以h=100:100:10000开头的循环,并替换该语句
z=h * ones(1, length(t));
借
如果我正确理解了您的代码,这可能是您应该做的。谢谢。看来只要改变一下陈述就足够了。但是,执行速度非常慢。我将尝试在删除内部循环时执行是否会加快。我感谢你的帮助!如果你只是按照我的建议改变陈述,你应该得到你想要的结果。那么
h
循环的目的是什么呢?实际上没有。因此,在大多数情况下,MATLAB速度慢的问题是代码问题?如果您将h=100:100:10000留在循环中,并按照我的建议更改代码,那么您的程序将计算相同的结果100次。我不确定是否可以从中得出这样的结论,即Matlab速度慢。我理解,当然最好去掉内部循环。
z = 100 * r * ones(1, length(t));