我想在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)]])
我不确定我错误地得到了这个错误?
答案 0 :(得分:2)
您已将名称sin
指定给math.sin(angle)
。 sin
现在是一个数字,正弦度为5度。当您尝试拨打sin(angle)
时,您正在尝试拨打电话号码。 cos
也是如此。更改矩阵以使用sin
和cos
代替sin(angle)
和cos(angle)
。或者,可能是一个更好的主意,将这些变量命名为sinA
和cosA
。让一个名为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]]