TypeError:在我的python旋转矩阵上

时间:2013-10-26 20:22:27

标签: python matrix rotation

我想在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)]])

我不确定我错误地得到了这个错误?

2 个答案:

答案 0 :(得分:2)

您已将名称sin指定给math.sin(angle)sin现在是一个数字,正弦度为5度。当您尝试拨打sin(angle)时,您正在尝试拨打电话号码。 cos也是如此。更改矩阵以使用sincos代替sin(angle)cos(angle)。或者,可能是一个更好的主意,将这些变量命名为sinAcosA。让一个名为sin的函数和一个名为sin的变量成为特定角度的正弦值令人困惑。

答案 1 :(得分:1)

只需改变:

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

为:

sin = math.sin
cos = math.cos

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

修改

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

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

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