python - 尝试使用另一个stackoverflow答案中的矢量角度公式,但无法让它打印角度
问题描述
我正在尝试使用此 SO 问题(https://stackoverflow.com/a/13849249)中的代码来计算两个向量之间的角度。但是我无法获得打印/显示的角度
我已经从缩进和非缩进位置尝试了 print(angle_between) 。我也尝试从缩进和非缩进位置返回(角度之间)。然而,我没有包括我认为只是对代码的解释。
import numpy as np
def unit_vector(vector):
np.linalg.norm(vector)
def angle_between(p_Sun, p_Titan):
v1_u = unit_vector(p_Sun)
v2_u = unit_vector(p_Titan)
return np.arccos(np.clip(np.dot(v1_u, v2_u), -1.0, 1.0))
print(angle_between(p_Sun, p_Titan))
我希望它以弧度打印角度,但是我得到了错误。
"TypeError: unsupported operand type(s) for *: 'NoneType' and 'NoneType'"
当我以不同的方式计算角度时(来自同一篇文章只是不同的评论,https://stackoverflow.com/a/2827475),我可以使用print() function
并获取角度。但是,我不喜欢这种方法,因为它对于某些向量对会失败。
解决方案
unit_vector 函数应写为:
def unit_vector(vector):
return vector / np.linalg.norm(vector)
目前,您的函数没有返回任何内容,因此默认情况下它返回 None。这就是为什么你会得到关于乘以 NoneTypes 的错误。此外,它计算单个值,即范数。对于单位向量,您必须将当前向量除以范数。希望有帮助!
推荐阅读
- php - 无法获取经过身份验证的数据
- c# - 在 C# 中创建网络服务器,但使用 Firebase 身份验证
- python - 如何将小部件链接到 Tkinter 中的函数
- python - 现有 NLP 模型的测试
- python - ModuleNotFoundError:没有名为“tensorflow_quantum”的模块
- java - 本机库在某些 JVM 上无法正常工作
- bootstrap-select - 如何更改 Bootstrap 选择的默认值
- xamarin.forms - 导航栏中的 Xamarin 表单标题转换
- git - 如何 git rebase -i 编辑并查看过去的提交更改
- ios - Swift Custom Cell 不会在其中实例化标签!致命错误:在隐式展开可选值时意外发现 nil