2012-06-01 44 views
2

說我有以下腳本:表面的MATLAB陰謀的一部分

u = -5:.2:5; 
[X,Y] = meshgrid(u, u); 
Z = cos(X).*cos(Y).*exp(-sqrt(X.^2 + Y.^2)/4); 
surf(X,Y,Z); 

反正是有,我可以積MatLab的只是表面的部分?比如說,我只想繪製一個點或一個網格,我該怎麼做?我想也許繪製一個點我可以使用:

surf(X(1,1), Y(1,1), Z(1,1)) 

但後來我得到的錯誤信息:

??? Error using ==> surf at 78 
Data dimensions must agree. 

我會很感激的一些輸入/在這裏幫助。感謝提前:)

回答

6

當我嘗試你嘗試過什麼,我得到如下:

衝浪(X(1,1),Y(1,1),Z(1 ,1))
使用衝浪(第75行)的錯誤Z必須是矩陣,而不是標量或向量。

所以,問題是,你不能這樣做只是使用surf點或線,你就必須使用不同的功能。但是你可以選擇次區域

>> ii=1:5; 
>> jj=1:20; 
>> surf(X(ii,jj),Y(ii,jj),Z(ii,jj)) 

另一種方法是使用的NaN作爲掩模。

>> mask = ones(size(X)); 
>> mask(1:20, 20:end) = nan; 
>> surf(X.*mask, Y.*mask, Z.*mask) 

這將使其中NaN是本不顯示的部分。

+0

太棒了!非常感謝您的回答! – Kristian

1

要僅顯示一個點,您可能會喜歡爲點雲設計的函數scatter3。

scatter3(X(1,1), Y(1,1), Z(1,1)) 

當然,它也適用於X,Y,Z點向量。您也可以直接爲每個點指定點的大小和顏色。

+0

非常感謝!非常感謝您的意見。 – Kristian