【问题标题】:Select the right matrix which satisfies a fair condition选择满足公平条件的正确矩阵
【发布时间】:2017-02-20 16:46:10
【问题描述】:

我有一组w 3D 矩阵。

w(:,:,1) =
    0.7791    0.0956    0.4664
    0.4257    0.4965    0.6954

w(:,:,2) =
    0.7791    0.1300    0.4749
    0.4257    0.7335    0.4552

w(:,:,3) =
    0.8823    0.7335    0.4664
    0.3944    0.1300    0.6954

w(:,:,4) =
    0.8823    0.4965    0.4749
    0.3944    0.0956    0.4552

我想得到每个矩阵的每一行的最小值。

minEach=min(w,[],2);
minMat=reshape(minEach,[2 4])

它给了

minMat =    
    0.0956    0.1300    0.4664    0.4749
    0.4257    0.4257    0.1300    0.0956

现在我想选择值相当高的列,这意味着列中的每个值都应该比其他列好得多。例如,第 4 列的值最好,但其他值很低。所以我做了什么,我得到每列的最小值并选择最大值。

minAll=max(min(minMat)) 
minAll =    
    0.1300

然后,我有 2 个选项,我选择其他两个值中的最大值,其中第 3 列是最佳选择(我不知道这一步在 Matlab 中如何执行)。然后,我要得到对应的w矩阵,也就是w(:,:,3)

问题:一般来说,w 包括n 没有。每个w(:,:,i) 的矩阵大小为p x q。我真的很困惑如何选择满足公平条件的正确w(:,:,i) 矩阵。特别是,如果w(:,:,i)5x6minAll 值可能在3 列。然后,我必须一次又一次地重复相同的过程。

如果有人可以指导我,那就太好了。

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    接下来的步骤是:

    查找包含 0.13 的列的 incides

    提取这些列并将它们连接成一个新矩阵

    在这个矩阵中找到包含最大值的列的索引

    然后获取w的索引idx

    [~,c,~]=find(minMat == minAll);
    minMat_selected= minMat(:,c);
    [~,cc,~] = find(minMat_selected == max(minMat_selected(:)));
    idx = c(cc(1));
    w(:,:,idx)
    

    【讨论】:

      猜你喜欢
      • 2011-07-20
      • 2022-07-30
      • 2021-01-03
      • 1970-01-01
      • 2013-08-10
      • 2017-10-22
      • 2019-04-24
      • 2020-02-11
      相关资源
      最近更新 更多