我有200 * 10的矩阵,它的值在50到150之间我必须将其标准化,我希望看到的值小于1

时间:2017-01-31 05:13:43

标签: matlab matlab-guide matlab-coder

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

我知道一种做法是将其除以最大值,但我想知道任何其他方式,即建立在matlab函数或任何其他数学公式中,将所有值转换为小于1。请不要像我试过的那样提及sigmoid功能。

由于

2 个答案:

答案 0 :(得分:0)

除以数字比计算更昂贵。尝试像

这样的东西
m = max(A(:))
B = A(A<m)

这称为“逻辑索引”。结果将是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 ]

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

答案 1 :(得分:0)

要标准化矩阵X,使值位于[0, 1]范围内,您可以使用:

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