类型错误:在我的python旋转矩阵上



我想在python中设置一个旋转矩阵,我可以将向量旋转5度:

import math
angle = math.radians(5)
#define sine
sine = math.sin
#define cosine
cosine = math.cos
#rotation matrix
rotMatrix = array([[cosine(angle), -sine(angle)],
                  [sine(angle),  cosine(angle)]])

但是当我运行我的程序时,我的rotMatrix出现错误

TypeError: must be unicode character, not list

它在以下行出错:

rotMatrix = array([[cosine(angle), -sine(angle)],
                  [sine(angle),  cosine(angle)]])

不确定我做错了什么才能得到这个错误?

您将名称sin分配给math.sin(angle)sin现在是一个数字,正弦为 5 度。 当您尝试呼叫sin(angle) 时,您正在尝试呼叫一个号码。 cos也是如此。 将矩阵更改为使用 sincos 而不是 sin(angle)cos(angle) 。 或者,可能是一个更好的主意,将这些变量命名为 sinAcosA . 有一个名为 sin 的函数和一个名为 sin 的变量是特定角度的正弦,这令人困惑。

只需更改:

sin = math.sin(angle)
cos = math.cos(angle)

自:

sin = math.sin
cos = math.cos

错误是您在将sin声明为浮点数(math.sin(angle)返回浮点数)后尝试调用sin(...)

编辑

我建议您使用 numpy.array 而不是 array.array,因为似乎无法创建列表数组。

或者更简单,使用列表列表,例如:

rotMatrix = [[a, b, c],
             [d, e, f],
             [g, h, i]]

最新更新