【问题标题】:Minimum of two multidimensional matrices, with which matrix 'won' (contained the minimum)两个多维矩阵的最小值,其中矩阵“获胜”(包含最小值)
【发布时间】:2018-10-14 13:37:07
【问题描述】:

我有两个矩阵(大小为 4x4),我想找到两者之间的最小值。例如:

A = [ 3, 2, 4, 5;              
      1, 2, 0, 6;                   
      9, 8, 5, 4;                   
      0, 1, 0, 3 ];               

B = [ 1, 1, 6, 8;
      0, 4, 6, 3;
      5, 6, 7, 1;
      0, 2, 3, 4 ];

现在,如果我在 Octave 中使用 min(A,B),它会给我

[ 1, 1, 4, 5;
  0, 2, 0, 3;
  5, 6, 5, 1;
  0, 1, 0, 3 ]

有没有办法在每个元素比较中获得“获胜”的矩阵,我的意思是哪个矩阵包含最小值?

例如,对于两个矩阵的第一个元素,矩阵B won 等等。 我不想遍历矩阵。

【问题讨论】:

    标签: matlab multidimensional-array octave minimum


    【解决方案1】:

    您可以比较AB 以找出最小值出现在哪个矩阵中。 使用A > B,如果选择了A 的条目,您将获得一个包含False 的矩阵,如果选择了B 的条目,您将获得一个包含True 的矩阵。通过添加1,如果选择A,您将获得1,如果选择B,您将获得2

    >> 1 + (A > B)
    ans =
       2   2   1   1
       2   1   1   2
       2   2   1   2
       1   1   1   1
    

    或者,您可以连接 AB 以形成维度为 [4, 4, 2] 的 3 维数组,其中 C(:, :, 1) = AC(:, :, 2) = B。然后您可以沿第三个轴在此矩阵C 上调用min。在一个矩阵上调用min时,可以直接获取“获胜者”的索引作为第二个返回值:

    >> C = cat(3, A, B);
    >> [res, idx] = min(C, [], 3)
    res =
       1   1   4   5
       0   2   0   3
       5   6   5   1
       0   1   0   3
    
    idx =
       2   2   1   1
       2   1   1   2
       2   2   1   2
       1   1   1   1
    

    【讨论】:

    • 完美! 3维数组的想法很漂亮!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 2021-08-25
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    相关资源
    最近更新 更多