如何创建曲面打印的切片以创建直线?(Matlab)

如何创建曲面打印的切片以创建直线?(Matlab),matlab,plot,matlab-figure,Matlab,Plot,Matlab Figure,给定一些函数z=f(x,y),我感兴趣的是沿着x,y,z的任意剖切面创建一个(1D)线图。如何在Matlab中实现这一点?例如,Slice提供了一个更高维度的版本(密度数据的彩色贴图),但这不是我想要的 例如: 例如,以前有人问过这个问题,但给出的答案是将3D数据简化为2D数据,而谷歌搜索没有明显的答案。谢谢。如果要对曲面进行切片的平面的法向量始终位于xy平面上,则可以沿切片线中的x,y坐标在曲面上插值数据,例如,将平面定义为从点(0,15)到点(50,35) 由于它是一个平面,使用linsp

给定一些函数z=f(x,y),我感兴趣的是沿着x,y,z的任意剖切面创建一个(1D)线图。如何在Matlab中实现这一点?例如,Slice提供了一个更高维度的版本(密度数据的彩色贴图),但这不是我想要的

例如:


例如,以前有人问过这个问题,但给出的答案是将3D数据简化为2D数据,而谷歌搜索没有明显的答案。谢谢。

如果要对曲面进行切片的平面的法向量始终位于xy平面上,则可以沿切片线中的x,y坐标在曲面上插值数据,例如,将平面定义为从点(0,15)到点(50,35)

由于它是一个平面,使用
linspace
可以相对容易地获得切片平面上的x,y坐标,因此我将获得100个点,然后将这100个点插值到原始数据中

% Create x and y over the slicing plane
xq=linspace(0,50,100);
yq=linspace(15,35,100);

% Interpolate over the surface
zq=interp2(x,y,z,xq,yq); 
现在我们有了z的值,我们需要根据什么绘制它们,这就是你需要为你的拼接平面定义一个任意的原点轴,为了方便起见,我将我的定义为(0,15),然后计算每个x,y对到这个轴的距离,然后我们可以根据这个距离绘制得到的z

dq=sqrt((xq-0).^2 + (yq-15).^2);

plot(dq,zq)

axis([min(dq),max(dq),-10,10]) % to mantain a good perspective

几个问题。您定义的平面是平行于z轴,还是有3个旋转自由度?那么,你将如何在输出图中定义x轴?@Noelsgura我对一个法向量始终在xy平面上的切割平面感兴趣。也就是说,在x,y的任何方向上切割但始终垂直的平面。
% Create x and y over the slicing plane
xq=linspace(0,50,100);
yq=linspace(15,35,100);

% Interpolate over the surface
zq=interp2(x,y,z,xq,yq); 
dq=sqrt((xq-0).^2 + (yq-15).^2);

plot(dq,zq)

axis([min(dq),max(dq),-10,10]) % to mantain a good perspective