我在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度是正确答案吗?
非常感谢任何帮助!
答案 0 :(得分:2)
要旋转图形轴,您可以使用视图命令:
surf(rand(20))
for az = 360:-1:-0
view(az, 30)
pause(0.01)
end
Azimus的值介于0°和360°之间。要以逆时针方向将轴图形旋转90°,您可以选择方位角:[270,180,90,0]
答案 1 :(得分:1)
正如@ASantosRibeiro所提到的,旋转功能将产生你想要的输出。顺便说一下,这里是代码的矢量化版本,如果你有一个非常大的数据集,你会发现它很有用。
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倍,所以看看它可能是值得的。
希望能帮到你!