说我有以下脚本:
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)
我真的很感激这里的一些输入/帮助.提前致谢 :)
当我尝试你尝试过的时候,我得到以下内容:
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的部分.
| 归档时间: |
|
| 查看次数: |
3659 次 |
| 最近记录: |