在八度中我想在3D中创建函数的轮廓线并 然后在空间中移动它:
x1=-4:0.1:4;
[X,Y]=meshgrid(x1,x1);
Z= X.^2+2*Y.^2;
hx=contour(X,Y,Z,[4 4]);
所以我得到了轮廓。 如何移动?
我想通过添加向量[a,b,c]来翻译它。
编辑:
例如参见此处。将蓝色椭圆移到黄色椭圆的位置。
谢谢
卡尔
答案 0 :(得分:1)
为解释3D和2D等高线之间的差异,我绘制了数据的3D曲面和3个多重数字。 我不是使用高度值4而是使用0,5,10..50为不同的Z值设置多个轮廓
x1=-4:0.1:4;
[X,Y]=meshgrid(x1,x1);
Z= X.^2+2*Y.^2;
subplot(2,2,1)
surf(X,Y,Z);
subplot(2,2,2)
contour(X,Y,Z,0:5:50);
subplot(2,2,3)
contour(X+2,Y+2,Z,0:5:50);
subplot(2,2,4)
contour(X,Y,Z+4,0:5:50);
print -djpg figure2.jpg
您可以看到子图1(左上)是3D表面,子图2(右上)是2D图像,报告了从5到50的Z的所有投影。 Z = 0的轮廓只是一个点,没有绘制。
在子图3(底部,左),我们将图形沿XY方向移动,X,Y = 2,2。 X,Y范围而不是-4:4现在变为-2:6。
在子图4(右下)上,将图形沿Z方向移动一个值4。轮廓形状因与平行于XY平面的平面的交点而不同 不一样。
答案 1 :(得分:0)
现在您已经澄清了您的需求,我们可以提出解决方案。
首先,我们需要使用countourc
x1=-4:0.1:4;
[X,Y]=meshgrid(x1,x1);
Z= X.^2+2*Y.^2;
C=contourc(X,Y,Z,[4 4]);
轮廓中有137(x,y)个点
size (C)
ans =
2 138
C(:,1:4)
ans =
4.000000 -0.280000 -0.200000 -0.100000
137.000000 -1.400000 -1.406897 -1.412069
C(1,1)是Z轴高度,C(2,1)是对数,因此我们可以用来提取国家的原始位置;
CX=C(1,2:end);
CY=C(2,2:end);
CZ=repmat([4],1,C(2,1));
然后在原始空间位置并以Z = 0绘制,即在XY平面上的投影
plot3(CX,CY,CZ,"color","yellow");
hold on;
plot3(CX,CY,CZ-4,"color","blue");
print -djpg figure3.jpg
答案 2 :(得分:0)