【问题标题】:Python matrix inversePython矩阵逆
【发布时间】:2018-01-13 07:40:41
【问题描述】:

我有一个相机矩阵k,我已经计算过了。 k 的值为:

[[  1.92160183e+08   0.00000000e+00   3.06056985e+02]
 [  0.00000000e+00   1.92160183e+08   1.57709172e+02]
 [  0.00000000e+00   0.00000000e+00   1.00000000e+00]]

现在,我尝试使用 numpy(使用 np.linalg.inv(k))找到 k 的倒数。让k1k 的倒数。

使用numpy,k*k1的值为:

[[  1.00000000e+00   0.00000000e+00  -4.87462472e-04]
 [  0.00000000e+00   1.00000000e+00  -1.29434633e-04]
 [  0.00000000e+00   0.00000000e+00   1.00000000e+00]]

现在,我期待一个完美的单位矩阵,但由于应该为零的值非常小,我决定忽略结果不是完美单位矩阵的事实。

现在我的问题是:我还有另外两个矩阵 RhR 是一个单位矩阵(它并不总是单位矩阵,但为了简单起见假设如此)。我需要执行H1 = k*R*k1*h。理想情况下,这应该将 h 的值分配给 H1(因为 k*R*k1 应该是身份)。

我原来的h矩阵:

 [[  1.71025842e+00  -7.51761942e-01   1.02803446e+02]
 [ -2.98552735e-16   1.39232576e-01   1.62792482e+02]
 [ -1.13518150e-18  -2.27094753e-03   1.00000000e+00]]

我的 R 矩阵:

[[ 1.  0.  0.]
 [ 0.  1. -0.]
 [-0.  0.  1.]]

使用H1 = k*R*k1*h产生的H1的值:

[[ 1.71025842 -0.         -0.        ]
 [-0.          0.13923258  0.        ]
 [ 0.         -0.          1.        ]]

使用H1 = k*k1*h产生的H1的值:

[[ 1.71025842 -0.         -0.05011282]
 [-0.          0.13923258 -0.02107099]
 [-0.         -0.          1.        ]]

为什么H1 的值不等于h?我怎样才能解决这个问题?

【问题讨论】:

    标签: python arrays numpy matrix-inverse


    【解决方案1】:

    您对* 运算符所做的理解有缺陷。它不执行点积。而是对两个数组执行元素乘法,也称为Hadamard product

    因此,如果您有两个 2D 数组,AB,则使用 - 计算点积

    而哈达玛产品看起来像这样 -

    这是一个元素乘法(以及您当前正在做什么)。尝试将其替换为调用 np.ndarray.dot 或使用 @ 运算符:

    >>> k.dot(k1)
    

    或者,

    >>> k @ k1   # python3.5+
    

    array([[ 1.,  0.,  0.],
           [ 0.,  1.,  0.],
           [ 0.,  0.,  1.]])
    

    对比一下——

    >>> k * k1  
    array([[  1.00000000e+00,   0.00000000e+00,  -4.87462473e-04],
           [  0.00000000e+00,   1.00000000e+00,  -1.29434634e-04],
           [  0.00000000e+00,   0.00000000e+00,   1.00000000e+00]])
    

    这就是你之前得到的。

    【讨论】:

    • 矩阵根据定义是二维的。因此,使用术语 2D 矩阵 是多余的。要么说 2D 数组,要么只说矩阵 :)
    猜你喜欢
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多