我想在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
也是如此。 将矩阵更改为使用 sin
和 cos
而不是 sin(angle)
和 cos(angle)
。 或者,可能是一个更好的主意,将这些变量命名为 sinA
和 cosA
. 有一个名为 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]]