Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math Matlab中的矢量夹角_Math_Matlab_Geometry - Fatal编程技术网

Math Matlab中的矢量夹角

Math Matlab中的矢量夹角,math,matlab,geometry,Math,Matlab,Geometry,我有两点,a和b。我需要计算它们之间的角度,所以我把它们当作向量。但是向量a将始终定义为[0]。阅读MATLAB新闻阅读器“”,提供了三种解决方案: x1 = 0; y1 = 0; z1 = 0; x2 = 0; y2 = 1; z2 = 0; a = [x1,y1,z1]; b= [x2,y2,z2]; theta = rad2deg(atan2(norm(cross(a,b)),dot(a,b))) theta = rad2deg(acos(dot(a,b))) theta = rad2d

我有两点,
a
b
。我需要计算它们之间的角度,所以我把它们当作向量。但是向量
a
将始终定义为[0]。阅读MATLAB新闻阅读器“”,提供了三种解决方案:

x1 = 0;
y1 = 0;
z1 = 0;
x2 = 0;
y2 = 1;
z2 = 0;
a = [x1,y1,z1]; b= [x2,y2,z2];

theta = rad2deg(atan2(norm(cross(a,b)),dot(a,b)))
theta = rad2deg(acos(dot(a,b)))
theta = rad2deg(atan2(x1*y2-x2*y1,x1*x2+y1*y2)) 
然而,由于
acos
在θ接近零时存在精度问题,但在三个方程中,只有
acos
提供了正确的解决方案

我应该继续使用
acos
还是有更好的解决方案?

a有大小和方向,而
a
b
只是空间中的坐标点。当您将
a
b
视为向量时,您隐式地将
[0 0]
定义为这两个向量的原点。但是,由于点
a
位于
[0]
,因此它将是一个长度为零的向量

如果向量长度为零,它指向哪个方向?答案是无处可寻。它不指向任何方向,因此你无法找到它和另一个向量之间的角度

我想也许你对自己的问题定义得不好。您的坐标系的原点是否不是
[0]
?你真的在试图找到由a和b构成的线与x-y平面之间的角度吗?

a有大小和方向,而a和b只是空间中的坐标点。当您将
a
b
视为向量时,您隐式地将
[0 0]
定义为这两个向量的原点。但是,由于点
a
位于
[0]
,因此它将是一个长度为零的向量

如果向量长度为零,它指向哪个方向?答案是无处可寻。它不指向任何方向,因此你无法找到它和另一个向量之间的角度


我想也许你对自己的问题定义得不好。您的坐标系的原点是否不是
[0]
?你真的想找出由
a
b
形成的线与x-y平面之间的角度吗?

错误在于设置
a=[0 0]
。关注点位于原点的中心,要计算相对于矢量
b
的角度,需要指定点的移动方向。这可以通过设置
a
为单位向量来实现

如果该点沿“x”方向移动,则
x1=1

x1 = 1;
y1 = 0;
z1 = 0;
x2 = 0;
y2 = 1;
z2 = 0;
a = [x1,y1,z1]; b= [x2,y2,z2];

theta = rad2deg(atan2(norm(cross(a,b)),dot(a,b)))
theta = rad2deg(acos(dot(a,b)))
theta = rad2deg(atan2(x1*y2-x2*y1,x1*x2+y1*y2))

theta =
    90
theta =
    90
theta =
    90

问题解决了,忘记使用单位向量:p

错误在于设置
a=[0]
。关注点位于原点的中心,要计算相对于矢量
b
的角度,需要指定点的移动方向。这可以通过设置
a
为单位向量来实现

如果该点沿“x”方向移动,则
x1=1

x1 = 1;
y1 = 0;
z1 = 0;
x2 = 0;
y2 = 1;
z2 = 0;
a = [x1,y1,z1]; b= [x2,y2,z2];

theta = rad2deg(atan2(norm(cross(a,b)),dot(a,b)))
theta = rad2deg(acos(dot(a,b)))
theta = rad2deg(atan2(x1*y2-x2*y1,x1*x2+y1*y2))

theta =
    90
theta =
    90
theta =
    90

问题解决了,忘记使用单位向量:p

两点之间的角度是多少?当一个向量为[0]时,两个向量之间的角度是多少?当一个向量为0时,求两个向量之间的角度意味着什么?你确定a不应该是[1]吗?此外,acos公式仅在向量为单位长度时有效,这至少对a是不正确的。两点之间的角度是多少?当一个向量为[0]时,两个向量之间的角度是多少?当一个向量为0时,求两个向量之间的角度意味着什么?你确定a不应该是[1]吗?此外,带有acos的公式仅在向量为单位长度时有效,这至少在a中是不正确的。