2016-05-31 2 views
0

Ich versuche, eine Matrix mit dem q durch 3 zu erstellen. In diesem Fall, q = 10. oder jede Zeile möchte ich die drei Werte die Ergebnisse der trigonometrischen sein Funktionen beschrieben in meinem Code unten.Ich versuche, eine Matrix mit einer Schleife in Python zu erstellen

Das Problem ist, dass ich immer einen Fehler bekomme, dass der Listenindex außerhalb des Bereichs ist. Ich verstehe nicht, warum es sagt, dass es außer Reichweite ist. In meinen Augen scheint meine Schleife korrekt zu sein. Kann mir jemand sagen, was ich übersehe/falsch mache?

# 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

Ihr 'az' Array hat 10 Elemente, nicht 8. –

+0

schön zu überprüfen, aber auch wenn ich setzen in der richtigen Anzahl von Zeilen der gleiche Fehler erscheint – noggy

Antwort

0

OP der Eingangsliste az hat 10 Elemente, nicht 8 als angenommen und die Bereiche der Matrix sollte ausgetauscht werden.

Außerdem nehmen sin und cos Funktionen normalerweise Radianten als Eingabe, während az scheint Winkel in Grad enthalten.

Dieser Code-Schnipsel:

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) 

gibt diese Ausgabe:

[[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

Ich habe versucht, mit Ihrem Code in meinem Code, aber ich bekomme immer noch die gleiche 'Index ist außerhalb der Reichweite' Fehler. edit: das war eigentlich richtig, danke für die hilfe! – noggy

Verwandte Themen