如何解决从Matlab到python的尺寸错误
我想将gram schmidt_process,matlab的算法更改为python 但是我遇到了类似的错误
def qr_mgs(A):
m,n = A.shape
Q = A
R = np.zeros((n,n))
for i in range(n - 1):
R[i,i] = np.linalg.norm(Q[:,i])
Q[:,i] = Q[:,i] / R[i,i]
R[i,i+1:n] = np.matmul(np.transpose(Q[:,i]),Q[:,i+1:n])
Q[:,i+1:n] = Q[:,i+1:n] - np.matmul(Q[:,i],R[i,i+1:n])
R[n,n] = np.linalg.norm(Q[:,n])
Q[:,n] = Q[:,n]/R[n,n]
return Q,R
ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0,with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 2 is different from 3)
出什么问题了?
是关于尺寸问题吗?
解决方法
尝试通过一些简单的示例调试代码。
qr_mgs(np.arange(1,10).reshape(3,3))
当我调试代码时,此行的尺寸不匹配:
Q[:,i+1:n] = Q[:,i+1:n] - np.matmul(Q[:,i],R[i,i+1:n])
Q[:,i]
的长度为3,R[:,i+1:n]
的长度为2。
您可能有一些索引问题,我不是代数专家,因此尽管如此,仍无法帮助您解决算法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。