说我有以下脚本:
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.
我真的很感激这里的一些输入/帮助。在此先感谢:)
答案 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点的矢量。您还可以直接指定每个点的磅值和颜色。