MATLAB绘制曲面的一部分

时间:2012-06-01 19:33:00

标签: matlab plot

说我有以下脚本:

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.

我真的很感激这里的一些输入/帮助。在此先感谢:)

2 个答案:

答案 0 :(得分:6)

当我尝试你尝试过的时候,我得到以下内容:

  
    
      

冲浪(X(1,1),Y(1,1),Z(1,1))
      使用surf时出错(第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的部分显示出来。

答案 1 :(得分:1)

要仅显示单个点,您可能会喜欢为点云设计的函数scatter3。

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

当然,它也适用于X,Y,Z点的矢量。您还可以直接指定每个点的磅值和颜色。