我可以将矩阵表示为一个数字吗?



这对你们来说可能是一个非常简单的问题。

我想将整个矩阵重新设置为单个数字。例如

假设我有一个 3*3 矩阵,如下所示:

[ 1 2 3, 4 5 6, 7 8 9 ]

我可以将此矩阵表示为单个数字吗?

问了这个问题,让我告诉你我为什么要这样做。

我有 2 个矩阵,我希望 2 个矩阵的差值为一个数字。我真正想要的是找出不同/相似的 2 个矩阵如何用单个数字(而不是矩阵(表示。

有一整类函数接受矩阵并产生标量数:请参阅 https://en.wikipedia.org/wiki/Matrix_norm 如果您只是想要一个简单的建议,请使用 Frobenius 范数。在 Python 中:

import numpy as np
frobenius = lambda matrix: np.sqrt(np.sum(matrix ** 2))

(或者,只使用scipy.linalg.norm(matrix, 'fro')!请参阅 scipy.linalg.norm 文档,其中列出了它支持的许多规范。

现在。如果要将两个矩阵之间的相似性量化为数字,请使用差值的范数:

frobenius(matrix1 - matrix2)

(不要先取范数再减去它们,这不是测量矩阵距离的可靠方法。(即frobenius(matrixA) - frobenius(matrixB) # BAD BAD BAD! .

您希望

两个矩阵之间的差值为单个数字。所以你不想把两个矩阵表示为一个数字,然后取差 - 这会起作用,但它会破坏信息。

如果矩阵大小相同,则取均方差根偏差。 a{0][0] - b[0][0] 平方等然后求和,取平均值和平方根(按此顺序(。

您可以定义一个双射函数,f矩阵空间到自然数集:

f: M -> N

您可以使用哈希函数以算法方式实现此方法。

相关内容

  • 没有找到相关文章

最新更新