假设您有Matrix A。
假设我们还有Matrix C
如果我们有A = B x C并且我们想找出我认为应该是3x3的B矩阵值(如果我错了就纠正我) < / p>
我们需要在这里使用矩阵求逆吗?多年来我没有使用代数。
我还没有代码,但是如果有人可以提供一个很棒的代码片段。
这是我在图像处理中遇到的问题,其中A,C保持RGB值。
提交的矩阵仅供参考。
我正在尝试使用Python numpy来解决这个问题 我希望有人可以帮忙。
答案 0 :(得分:1)
你的矩阵应该是5x5。当我们处理非平方矩阵时,您可以使用C的广义逆来获得B:
import numpy as np
np.random.seed(10)
A = np.random.randint(0,9,(5,3))
C = np.random.randint(0,9,(5,3))
B = np.matmul(A,np.linalg.pinv(C))
print B
答案 1 :(得分:0)
根据percusse的评论,您可以使用numpy.linalg.lstsq
执行此操作。但是,这假设我们正在执行矩阵左划分,但情况是你的问题是正确划分。
使用您使用B = A / C
解决B的事实,lstsq
解决了A \ C
类型的问题。要将其转换为lstsq
的表单,我们可以通过以下方式将其转换为后一个问题:
B = A / C = (C' \ A')'
'
运算符是转置。以上是通过线性代数规则找到的。具体来说,执行两个转置:((A / C)')'
,其中转换矩阵两次只是其自身的结果。此外,知道(AC)'
等于C'A'
并且对于矩阵,转置的倒数等于倒数的转置,你应该得到上述关系。
因此:
B = numpy.linalg.lstsq(C.T, A.T)[0].T
lstsq
的输出是一个元组,其中第一个元素是实际解决方案。
请注意,对于您的特定示例,C
是排名不足的矩阵,因此您无法从A
和B
正确重建C
。