2013-09-26 78 views
0

基本上我想做一個三維繪圖,每個圓圈有不同半徑的100個圓形和一個新的高度平面(h)。每個圓的半徑增加(不斷增加),h不斷增加。3D中的繪圖圈

我的代碼的問題是,根據需要繪製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)); 
    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 

回答

2

你已經有了一個循環內的另一個每個循環有100次迭代,所以你打算用什麼100*100結束了。

我建議你

z = 100 * r * ones(1, length(t)); 

去除內環,一開始for h=100:100:10000和更換聲明

z=h * ones(1, length(t)); 

如果我理解你的代碼正確這可能是你應該這樣正在做。

+0

謝謝。看來只要改變陳述就可以完成。但是,執行速度非常緩慢。我會嘗試如果刪除內部循環時執行速度會加快。我感謝您的幫助! – EricAm

+1

如果您只是按照我的建議更改陳述,則應該得到您想要的結果。那麼'h'循環的目的是什麼? –

+0

實際上沒有。所以MATLAB的緩慢問題在大多數情況下是代碼問題? – EricAm