如何将matlab中的矩阵算子转换为python
我想将以下Matlab代码转换为Python中的等效代码:如何将matlab中的矩阵算子转换为python,python,matlab,matrix,operations,Python,Matlab,Matrix,Operations,我想将以下Matlab代码转换为Python中的等效代码: M.*((S*U)./max(realmin, M*(U'*U))) 其中: S: n*n M: n*m U: n*m 我是通过以下代码完成的: x = (max(-sys.maxint, np.matmul(M, np.matmul(np.transpose(U), U)))) M = np.dot(M, ((np.matmul(S, U)) / x)) 但我得到了以下错误: x = (max(-sys.maxint, np.m
M.*((S*U)./max(realmin, M*(U'*U)))
其中:
S: n*n
M: n*m
U: n*m
我是通过以下代码完成的:
x = (max(-sys.maxint, np.matmul(M, np.matmul(np.transpose(U), U))))
M = np.dot(M, ((np.matmul(S, U)) / x))
但我得到了以下错误:
x = (max(-sys.maxint, np.matmul(M, np.matmul(np.transpose(U), U))))
ValueError: The truth value of an array with more than one element is
ambiguous. Use a.any() or a.all()
请您帮助我如何将Matlab代码转换为Python。Matlab的max(a,b)
是一种广播的元素最大操作。Python的max(a,b)
不是。Python的max
不理解数组,您不应该在数组上使用它
对于广播的元素最大值,您需要:
另外,Matlab的realmin
是一个,而Python的sys.maxint
是一个(在Python3上也不存在)。那可能不是你想要的。与Matlab的realmin等价的是
sys.float_info.min
或
(
numpy.finfo(float).min
是另一回事。)的可能重复的可能重复虽然错误相同,但我认为对我来说问题是因为matlab代码的错误转换而提出的,并且私有链接不能帮助我M*(S@U)/np.max(numpy.finfo(float).tiny,M@U.T@U))
您能帮我正确转换整个代码吗?python中的./(右除法)等价物是什么?
sys.float_info.min
numpy.finfo(float).tiny