反向Matrix Python

时间:2013-04-03 02:46:23

标签: python geometry interpolation matrix-inverse

我试图在Python中采用矩阵的逆矩阵并继续得到语法错误。我是Python的新手。在进行互联网搜索并尝试多种方法后,我仍然没有得到它。有人可以看看我的代码并指出我正确的方向吗? 错误信息:     python2.6 test.py       文件“test.py”,第39行       inverse = mat1.I * mat2          ^     SyntaxError:语法无效

谢谢!

#import all of the needed libraries
import math
import matplotlib.pyplot as plt
import numpy
import array
import itertools
from numpy import linalg as LA

#variables and defs
x = []
y = []
h1 = 1
h2 = 5
h3 = 10
x1 = .5
x2 = 9.5
x3 = 4.5
y1 = .5
y2 = 2.5
y3 = 9.5


#create a 10x10 grid
for i in range(10):
    for j in range(10):
        x.append(i)
        y.append(j)
    j=0

#Triangle Interpolation Method 3
for i in range(100):
    xp = x(i)
    yp = y(i)

    mat1 = ([[(x1-x3),(x2-x3)],[(y1-y3), (y2-y3)]])  
    mat2 = ([(xp-x3), (yp-y3)]
    inverse = (LA.inv(mat1))*mat2

    w1 = inverse(1)
    w2 = inverse(2)
    w3 = 1-w1-w2

#check to see if the points fall within the triangle
if((w1 <=1 && w1 >=0) && (w2 <=1 && w2 >=0) && (w3 <=1 && w3>=0))
    z = (h1*w1)+(h2*w2)+(h3*w3)
.
.
.

3 个答案:

答案 0 :(得分:3)

除了Nick Burns指出的缺失:之外,Python不使用&&。您应该使用and代替:

if((w1 <=1 and w1 >=0) and (w2 <=1 and w2 >=0) and (w3 <=1 and w3>=0)):
    z = (h1*w1)+(h2*w2)+(h3*w3)

此外,Python允许以下语法简化if条件:

if (0 <= w1 <= 1) and (0 <= w2 <= 1) and (0 <= w3 <=1):
    z = (h1*w1)+(h2*w2)+(h3*w3)

修改

根据您的评论指出的实际错误是此行上的不平衡括号:

mat2 = ([(xp-x3), (yp-y3)]

应该只是:

mat2 = [(xp-x3), (yp-y3)]

你可以进一步写作

mat2 = [xp-x3, yp-y3]

为了更容易看到必要的分隔符匹配。

答案 1 :(得分:0)

您的语法错误很可能来自代码末尾的if语句。当IF语句末尾没有':'时,你会得到一个syntaxError。

例如:

def hello(name):
    if name

SyntaxError: invalid syntax

希望有所帮助!

答案 2 :(得分:0)

你错过了一个闭幕式。

mat2 = ([(xp-x3), (yp-y3)]

应该是

mat2 = ([(xp-x3), (yp-y3)])

但是,修复后会出现进一步的语法错误。你可以看看Ray和Nick Burns的答案。