Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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
Algorithm 问题计算角度_Algorithm_Matlab_Math_Geometry_Angle - Fatal编程技术网

Algorithm 问题计算角度

Algorithm 问题计算角度,algorithm,matlab,math,geometry,angle,Algorithm,Matlab,Math,Geometry,Angle,我有以下数据: 请注意,数据的规模非常小。我需要做的是计算每个点和正y轴之间的角度,然后再做一次,但找到与正x轴的角度。我认为正y轴是从原点到点(0,1)的向量,正x轴是从原点到点(1,0)的向量。以下是我迄今为止所做的工作: X表示数据向量,其中第一列为X坐标,第二列为相应的y坐标。角度和角度_2显示了两种不同的方式,我试图计算与正y轴的角度。他们都给了我相同的答案,但我真的不确定这是否正确。我在另一个数据集上测试了这些方法: 您可以清楚地看到,第二个数据集上的第一个点(不在原点上)与y轴

我有以下数据:

请注意,数据的规模非常小。我需要做的是计算每个点和正y轴之间的角度,然后再做一次,但找到与正x轴的角度。我认为正y轴是从原点到点(0,1)的向量,正x轴是从原点到点(1,0)的向量。以下是我迄今为止所做的工作:

X表示数据向量,其中第一列为X坐标,第二列为相应的y坐标。角度和角度_2显示了两种不同的方式,我试图计算与正y轴的角度。他们都给了我相同的答案,但我真的不确定这是否正确。我在另一个数据集上测试了这些方法:

您可以清楚地看到,第二个数据集上的第一个点(不在原点上)与y轴的距离远大于第一个数据集上的第一个点。因此,我应该得到一个更大的角度,但相反,发生了相反的事情

有人能帮我吗?我到底做错了什么?我真的很感激能在这里得到的任何帮助

编辑以下数据:

(一)


2) 为什么不在循环中使用cart2pol(X[i,1],X[i,2])转换为笛卡尔坐标


cart2pol上的参考:

为什么不在循环中使用cart2pol(X[i,1],X[i,2])转换为笛卡尔坐标


cart2pol上的参考:

为什么不在循环中使用cart2pol(X[i,1],X[i,2])转换为笛卡尔坐标


cart2pol上的参考:

为什么不在循环中使用cart2pol(X[i,1],X[i,2])转换为笛卡尔坐标




cart2pol上的参考:

为什么不使用cart2pol()转换为笛卡尔坐标。第二个数据集上的第一个点离y轴更远,但离x轴也远得多。因此,与y轴的角度较小,这在两个图中很容易看到。atan2d已经给出了以度为单位的结果,为什么要使用“*180/pi”?很抱歉,复制我的代码时出错了。我最初没有atan2d。为什么不使用cart2pol()转换为笛卡尔坐标。第二个数据集中的第一个点离y轴更远,但离x轴也远得多。因此,与y轴的角度较小,这在两个图中很容易看到。atan2d已经给出了以度为单位的结果,为什么要使用“*180/pi”?很抱歉,复制我的代码时出错了。我最初没有atan2d。为什么不使用cart2pol()转换为笛卡尔坐标。第二个数据集中的第一个点离y轴更远,但离x轴也远得多。因此,与y轴的角度较小,这在两个图中很容易看到。atan2d已经给出了以度为单位的结果,为什么要使用“*180/pi”?很抱歉,复制我的代码时出错了。我最初没有atan2d。为什么不使用cart2pol()转换为笛卡尔坐标。第二个数据集中的第一个点离y轴更远,但离x轴也远得多。因此,与y轴的角度较小,这在两个图中很容易看到。atan2d已经给出了以度为单位的结果,为什么要使用“*180/pi”?很抱歉,复制我的代码时出错了。我本来没有atan2d。好吧,我现在就试试这个。要从y轴的正方向求出角度,我会用90度减去结果吗?使用cart2pol得到的答案与我之前得到的答案相同,所以我想我做得对。我想验证一下,从正y轴计算角度的最佳方法是什么?第一个点在两个轴上的距离都较大,因此角度较小是有意义的。你的代码对我来说似乎是正确的,但是你的
角度
有一些低效的地方,比如
点([0,1],[0,1])
(总是等于1),轴的乘法也可以简化
angles_2
要好得多,但是使用
cart2pol
的rountine更容易阅读。您指的是第一个或第二个图形上的第一个点吗?另外,我不介意使用cart2pol,但是当从正y轴找到角度时,我应该做90-cart2pol(X(I,1),X(I,2))正确吗?对不起,我没有意识到你想要的是度而不是弧度。如果您确信永远不会得到负值,
atan2d
是一个不错的选择。我也找到了一个更好的解决方案:
atan2d(X(1:end,2),X(1:end,1))
。是的,从90中减去得到y的角度(当然,在使用
atan2d
之后;
cart2pol
返回弧度)。好的,我将继续尝试这个。要从y轴的正方向求出角度,我会用90度减去结果吗?使用cart2pol得到的答案与我之前得到的答案相同,所以我想我做得对。我想验证一下,从正y轴计算角度的最佳方法是什么?第一个点在两个轴上的距离都较大,因此角度较小是有意义的。你的代码对我来说似乎是正确的,但是你的
角度
有一些低效的地方,比如
点([0,1],[0,1])
(总是等于1),轴的乘法也可以简化
angles_2
要好得多,但是使用
cart2pol
的rountine更容易阅读。您指的是第一个或第二个图形上的第一个点吗?另外,我不介意使用cart2pol,但是当从正y轴找到角度时,我应该做90-cart2pol(X(I,1),X(I,2))正确吗?对不起,我没有意识到你想要的是度而不是弧度。如果您确信永远不会得到负值,
atan2d
是一个不错的选择。我也找到了一个更好的解决方案:
atan2d(X(1:end,2),X(1:end,1))
。是的,从
 for i=1:length(X)
  angles(i)=acos(dot([0,1],X(i,:))/sqrt(dot([0,1],[0,1])*dot(X(i,:),X(i,:)))).*180/pi;
  angles_2(i)=atan2d(X(i,1),X(i,2)).*180/pi;
end