我在matlab中生成了3D曲面。
clear all;
close all;
clc;
x = [1:0.1:5];
y=[1:50];
[n1 n2] = size(x);
[m1, m2] = size(y);
for i = 1 : m2
for j = 1 : n2
z(i,j) = (x(1,j)) / (y(1,i));
end
end
[x, y] = meshgrid(x, y);
surf(y, x, z)
colorbar
xlabel('x')
ylabel('y')
zlabel('z')
我得到了以下绘制的表面:
我现在有兴趣按顺时针方向旋转四分之一圈。我知道我可以使用“ rotate3d on
”并选择最佳的Az和EI,但是我不知道什么是Az和EI以及应该如何满足我的需求?
例如:
还有另一个函数称为camroll()
。但是我不知道()中的值是什么,才能将立方体按顺时针方向旋转四分之一圈。90度是正确的答案吗?
任何帮助将不胜感激!
正如@ASantosRibeiro所提到的,rotate函数将产生您想要的输出。顺便说一句,这是代码的矢量化版本,如果您的数据集大得多,则可能会发现它很有用。
x = 1:0.1:5;
y=1:50;
X = repmat(x',1,size(y,2)).';
Y = repmat(y',1,size(x,2));
Z = X./Y;
figure
hSurf = surf(Y,X,Z);
rotate(hSurf,[1,0,0],45) % As proposed by @ASantosRibeiro
colorbar
xlabel('x')
ylabel('y')
zlabel('z')
该repmat功能用于复制x和y,以形成X与Y正确尺寸被允许以将一个由另形式Z.这个操作是非常相似的呼叫在代码meshgrid。对于像您的示例中那样的小型数据集,运行时间与两种方法(在我的笔记本电脑上)相似,但是例如,当我使用x = 1:0.1:500和y = 1:500时,矢量化版本所需的时间减少了3倍,因此值得一看。
希望对您有所帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句