【问题标题】:MATLAB plot part of surfaceMATLAB绘制表面的一部分
【发布时间】:2012-06-01 19:32:59
【问题描述】:

假设我有以下脚本:

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.

我非常感谢您在这里提供一些输入/帮助。在此先感谢:)

【问题讨论】:

    标签: matlab plot


    【解决方案1】:

    当我尝试您尝试的方法时,我得到以下信息:

    冲浪(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 的部分不显示。

    【讨论】:

      【解决方案2】:

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

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

      当然,它也适用于 X,Y,Z 点的向量。您也可以直接为每个点指定点的大小和颜色。

      【讨论】:

      • 非常感谢!非常感谢您的意见。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 2012-11-23
      相关资源
      最近更新 更多