基于python 3.11.3和numpy1.24.3包运算的SVD结果与基于python 3.9.12 和numpy 1.21.5包运算结果存在正负号差异?

  • 问题描述:基于python 3.11.3和numpy1.24.3包运算的SVD结果与基于python 3.9.12 和numpy 1.21.5包运算结果存在正负号差异。
  • 原因分析:对于矩阵A以下两种的SVD形式是一样的,即A=U\wedge V^{T}=(-U)\wedge(-V)^{T}所以符号存在不同是可能的。
  • 代码
  • Low_Data_u, Low_Data_s, Low_Data_v = np.linalg.svd(Low_fNIRS,full_matrices=False)
    np.allclose(Low_fNIRS,np.dot(Low_Data_u*Low_Data_s,Low_Data_v))

  • 例子说明以及数据展示如下

你可能感兴趣的:(python,开发语言)