2016-05-31 16 views
0

私はqが3である行列を作成しようとしています。この場合、q = 10.または3つの値を三角法の結果にしたい各行以下の私のコードで説明されています。Pythonでループを使って行列を構築しようとしています

問題は、リストのインデックスが範囲外であるというエラーが表示され続けることです。なぜそれが範囲外であると言っているのか分かりません。私の目には、私のループは正しいようです。誰かが私が間違っている/間違っていることを教えてもらえますか?

# Input az matrix 
    az = [142.243258152,116.039625836,80.1585056414,139.614063776,87.2093336287,94.1433825229,35.5599100744,11.0328982848,177.717968103,19.0072693362] 

# Construct frame of X matrix 
X = [[0 for x in range(10)] for y in range(3)] 

# Use az matrix to complete X matrix 
f=0 
for bear in az: 
    X[f][0] = (M.cos(bear))**2 
    X[f][1] = 2*M.cos(bear)*M.sin(bear) 
    X[f][2] = (M.sin(bear))**2 
    f=f+1 

print X 
+0

はあなた 'az'配列は10個の要素ではなく、8 –

+0

素敵なチェックを持っている、しかし、私は適切な数の中に入れた場合でも、同じエラーが表示される行 – noggy

答えて

0

OPの入力リストaz想定とマトリックスの範囲が交換されなければならないように10個の要素ではなく、8を有しています。

さらに、sincosの関数は通常ラジアンを入力とし、azの角度は度数の誤差を含んでいるようです。

このコード:

from math import radians, cos, sin 

# Input az matrix 
az = [142.243258152, 116.039625836, 80.1585056414, 139.614063776, 87.2093336287, 94.1433825229, 35.5599100744, 11.0328982848, 177.717968103, 19.0072693362] 

# Construct frame of X matrix 
X = [[0 for x in range(3)] for y in range(10)] 

# Use az matrix to complete X matrix 
f=0 
for bear in az: 
    r = radians(bear) 
    c = cos(r) 
    s = sin(r) 
    X[f][0] = c**2 
    X[f][1] = 2*c*s 
    X[f][2] = s**2 
    f=f+1 

print(X) 

はこの出力を与える:

[[0.6250760791021176, -0.9682065367191874, 0.37492392089788235], [0.19271454590900655, -0.7888615840667916, 0.8072854540909934], [0.029214706063653385, 0.3368157182393228, 0.9707852939363467], [0.5801828858777331, -0.9870576575100736, 0.41981711412226685], [0.0023704299165554724, 0.09725864441922212, 0.9976295700834447], [0.0052204459914281754, -0.14412762309951216, 0.9947795540085718], [0.6617950612456389, 0.9461973539521655, 0.33820493875436103], [0.9633765287676627, 0.3756710933102597, 0.0366234712323373], [0.9984144917844932, -0.07957372378380607, 0.001585508215506806], [0.893927252777247, 0.615861411421014, 0.10607274722275291]] 
+0

私のコードであなたのスニペットを使ってみましたが、私はまだ同じ 'インデックスが範囲外です'というエラーを受けています。編集:これは正しかった、助けてくれてありがとう! – noggy

関連する問題