【问题标题】:How to normalize matrix setting 0 for minimum values and 1 for maximum values?如何标准化矩阵设置 0 为最小值和 1 为最大值?
【发布时间】:2016-04-04 01:01:42
【问题描述】:

我需要将大小为 2 X N 的神经网络输出矩阵转换为 0 和 1,其中 0 表示列的最小值,而 1 则相反。这将是计算混淆矩阵所必需的。

例如,考虑这个矩阵 2 X 8:

 2    33     4     5     6     7     8     9
 1    44     5     4     7     5     2     1

我需要得到这个结果:

 1    0     0     1     0     1     1     1
 0    1     1     0     1     0     0     0

如何在没有 for 循环的情况下在 MATLAB 中执行此操作?提前致谢。

【问题讨论】:

    标签: matlab


    【解决方案1】:
    >> d = [ 2    33     4     5     6     7     8     9;
             1    44     5     4     7     5     2     1];
    
    >> bsxfun(@rdivide, bsxfun(@minus, d,  min(d)), max(d) - min(d))
    
    ans =
    
         1     0     0     1     0     1     1     1
         0     1     1     0     1     0     0     0
    

    bsxfun 函数用于将减法和除法运算广播到不同维度的矩阵(最小值和最大值各只有 1 行)。

    其他解决方案如下(仅适用于 2 行):

    >> [d(1,:) > d(2,:); d(1,:) < d(2,:)]
    
    ans =
    
         1     0     0     1     0     1     1     1
         0     1     1     0     1     0     0     0
    

    【讨论】:

      【解决方案2】:

      如果它只是 2xN,那么这将起作用:

      floor(A./[max(A); max(A)])
      

      一般:

       floor(A./repmat(max(A),size(A,1),1))
      

      【讨论】:

        猜你喜欢
        • 2014-06-17
        • 1970-01-01
        • 2020-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-10
        • 1970-01-01
        • 2013-03-11
        相关资源
        最近更新 更多