我有 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(:)))
我有一个矩阵 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(:)))