0

ベクトルを 5 度回転できる Python で回転行列を設定したい:

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)]])

このエラーが発生するために何が間違っているのかわかりませんか?

4

2 に答える 2

2

sinに名前を割り当てましたmath.sin(angle)sinは数値で、5 度のサインです。に電話をsin(angle)かけようとすると、番号に電話をかけようとしています。についても同様ですcossinandcosの代わりにsin(angle)andを使用するようにマトリックスを変更しますcos(angle)sinAまたは、おそらくより良いアイデアとして、これらの変数にandのような名前を付けますcosA。関数が呼び出され、特定の角度のサインであるsin変数が呼び出されると混乱します。sin

于 2013-10-26T20:24:49.850 に答える
1

変更するだけです:

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

に:

sin = math.sin
cos = math.cos

sin(...)エラーは、フロートとして宣言した後に呼び出そうとしたことでしsinた(フロートをmath.sin(angle)返します)

編集

リストの配列を作成することはできないようですので、numpy.array代わりにを使用することをお勧めします。array.array

または、より簡単に、次のようなリストのリストを使用します。

rotMatrix = [[a, b, c],
             [d, e, f],
             [g, h, i]]
于 2013-10-26T20:24:28.473 に答える