MATLAB绘制曲面的一部分

Kri*_*ian 2 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);
Run Code Online (Sandbox Code Playgroud)

无论如何,我可以让MatLab只绘制表面的一部分吗?比方说,我只想绘制单个点或单个网格,我该怎么办?我想也许可以用一点我可以使用:

surf(X(1,1), Y(1,1), Z(1,1))
Run Code Online (Sandbox Code Playgroud)

但后来我收到错误信息:

??? Error using ==> surf at 78
Data dimensions must agree.
Run Code Online (Sandbox Code Playgroud)

我真的很感激这里的一些输入/帮助.提前致谢 :)

tmp*_*rce 6

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

surf(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))
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用NaNs作为掩模.

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

这将使得不存在NAN的部分.