Matlab中圆锥螺旋线在圆锥上的投影?
假设您有Matlab中圆锥螺旋线在圆锥上的投影?,matlab,math,geometry,Matlab,Math,Geometry,假设您有f(x)=x层(x) 通过这种方式,您可以通过粘合顶部和底部来生成凹槽 底部一起,然后向左挤压到零——现在 有一个圆锥形螺旋线:线围绕圆锥体旋转,直到它碰到圆锥体 底部。你们已经有了圆锥曲线的一种形式的方程 螺旋即x=a*cos(a);y=a*sin(a);z=a。现在喜欢 : 如何在Matlab中将圆锥螺旋投影到圆锥上? 我不会使用plot3,而是使用and来解决您的问题。请注意,sinc是一个matlab内置函数,只执行sin(x)。/x,例如: 因此,在一维中,如果我理解正确,
f(x)=x层(x)
通过这种方式,您可以通过粘合顶部和底部来生成凹槽
底部一起,然后向左挤压到零——现在
有一个圆锥形螺旋线:线围绕圆锥体旋转,直到它碰到圆锥体
底部。你们已经有了圆锥曲线的一种形式的方程
螺旋即x=a*cos(a);y=a*sin(a);z=a
。现在喜欢
:
如何在Matlab中将圆锥螺旋投影到圆锥上?
我不会使用
plot3
,而是使用and来解决您的问题。请注意,sinc
是一个matlab内置函数,只执行sin(x)。/x
,例如:
因此,在一维中,如果我理解正确,您希望在sqrt(x.^2)
上“投影”sinc(x)
。你的问题是你提到了点积的投影,但是点积减少了维数,所以两个向量的点积给出了一个标量,两个二维曲面的点积给出了一个向量,所以我不明白你的意思。从你添加的二维图中,我将这个问题解释为一个功能与另一个功能“搭配”,就像另外
以下是实现:
N=64;
[x y]=meshgrid(linspace(-3*pi,3*pi,N),linspace(-3*pi,3*pi,N));
t=sqrt(x.^2+y.^2);
f=t+2*sinc(t);
subplot(1,2,1)
mesh(x,y,f) ; axis vis3d
subplot(1,2,2)
mesh(x,y,f)
view(0,0) ; axis square
colormap bone
将
sinc
中的2
因子放置在sinc
中,以便更好地可视化sinc
的波动我不会使用plot3
,而是使用and。请注意,sinc
是一个matlab内置函数,只执行sin(x)。/x
,例如:
因此,在一维中,如果我理解正确,您希望在sqrt(x.^2)
上“投影”sinc(x)
。你的问题是你提到了点积的投影,但是点积减少了维数,所以两个向量的点积给出了一个标量,两个二维曲面的点积给出了一个向量,所以我不明白你的意思。从你添加的二维图中,我将这个问题解释为一个功能与另一个功能“搭配”,就像另外
以下是实现:
N=64;
[x y]=meshgrid(linspace(-3*pi,3*pi,N),linspace(-3*pi,3*pi,N));
t=sqrt(x.^2+y.^2);
f=t+2*sinc(t);
subplot(1,2,1)
mesh(x,y,f) ; axis vis3d
subplot(1,2,2)
mesh(x,y,f)
view(0,0) ; axis square
colormap bone
将
sinc
中的2
因子放置在sinc
中是为了更好地可视化sinc的波动,我想你是在寻找1./(t.*sin(t))
而不是sin(t)。/t
?按照你编写这个表达式的方式,Matlab会将它解释为后一个表达式。@zplesivcak也许,我还不知道——我试图理解如何首先扭曲圆锥体的表面,即添加波动项。我喜欢把它看作是沿着曲面的投影,但我需要找出曲面在每个点上的法向量,思考。也许我觉得这太数学化了1./(t.*sin(t))
是一个非常糟糕的函数,有很多极点,所以我认为你需要sin(t)。/t
…如果zplesivcak确实正确,那么你也可以使用sinc
我想你是在寻找1./(t.*sin(t))
而不是sin(t)。/t
?按照你编写这个表达式的方式,Matlab会将它解释为后一个表达式。@zplesivcak也许,我还不知道——我试图理解如何首先扭曲圆锥体的表面,即添加波动项。我喜欢把它看作是沿着曲面的投影,但我需要找出曲面在每个点上的法向量,思考。也许我觉得这太数学化了1./(t.*sin(t))
是一个非常糟糕的函数,有很多极点,所以我认为你需要sin(t)。/t
…如果zplesivcak确实是正确的,那么你也可以使用sinc
我无法理解“t=sqrt(x.^2+y.^2);”
——它现在在峰值上有更大的波动,在广阔区域附近有更小的波动吗?这个“t=f=t+2*sinc(t)。*t”
使它看起来沿着表面振动一样——也许现在振动太大了?我还得研究这一点才能理解。我试过f=1./t+2*sinc(t)
但为了达到最大峰值,测试…t
只是半径,意思是z(x,y)=sqrt(x^2+y^2)=t
将产生一个圆锥体。至于sinc
,我不确定这是否是您所指的函数,但您可以在链接中的文档中了解它,我还在答案中添加了它的绘图。为什么你在评论中增加了t*sinc
?这样做的结果是常规的sin
而不是sinc
…缺少螺钉形状(手绘图片)、尖头和从宽区域到顶部的下降波动(振幅最小的顶部)--尝试了f=t+2*fliplr(sinc(t))
但不工作--仍在调试,可能是自己解决问题,但需要一些时间。sinc
是一个对称函数,fliplr
不会改变它。我想你需要先找到一个函数,它能满足你的需要,这就是sinc,不是吗。也许您需要类似于f=t+exp(-t/a)。*cos(b*t)
;我无法理解“t=sqrt(x.^2+y.^2);”
——现在它在峰值上的波动更大,而在广阔区域附近的波动更小吗?这个“t=f=t+2*sinc(t)。*t”
使它看起来沿着表面振动一样——也许现在振动太大了?我还得研究这一点才能理解。我试过f=1./t+2*sinc(t)
但为了达到最大峰值,测试…t
只是半径,意思是z(x,y)=sqrt(x^2+y^2)=t
将产生一个圆锥体。至于sinc
,我不确定这是否是您所指的函数,但您可以在链接中的文档中了解它,我还在答案中添加了它的绘图。为什么你在评论中增加了t*sinc
?这样做会导致常规的sin
而不是sinc
…缺少螺钉形状(手绘图片)、尖头和从broa下降的波动