我有 200*10 的矩阵,它的值在 50 到 150 之间,我必须对其进行归一化,即我想看到小于 1 的值

I have matrix of 200*10 it has values between 50 and 150 I have to normalize it that is I want to see values less than one

我有一个矩阵 200 *10,其值介于 100 和 150 之间,我希望其值介于 [0 1] 之间。

我知道一种方法是将它除以最大值,但我想知道任何其他方法,即内置 matlab 函数或任何其他数学公式,将所有值移动到小于 1。请不要提及我已经尝试过的 sigmoid 函数。

谢谢

除以数字比比较在计算上要昂贵得多。试试像

m = max(A(:))
B = A(A<m)

这叫做"logical indexing"。结果将是 A 小于最大值 m 的值向量。虽然 m 不一定是最大值......您同样可以替换 m 的任何值,逻辑索引将起作用。

比如上面的代码,如果

A = 
[0     3     4
 2     0     4
 5     5     2
 4     5     3
 5     4     1 ]

B.' =  [ 0     2     4     3     0     4     4     4     2     3     1 ]

如果这是您的想法,请告诉我。这个问题有点不清楚。

要对矩阵 X 进行归一化,使值位于 [0, 1] 范围内,您可以使用:

Xnorm = (X - min(X(:)))/(max(X(:)) - min(X(:)))