【问题标题】:compare multiple matrices matlab比较多个矩阵matlab
【发布时间】:2013-08-08 23:53:17
【问题描述】:

我有多个相同大小的矩阵并想比较它们。 因此,我需要一个矩阵来为每个值提供 3 个中最大的一个。

我会用一个例子来说明我的意思:

我有 3 个包含 3 个人数据的矩阵。

我想比较这 3 个并得到一个矩阵作为结果。

在该矩阵中,每个单元格/值都应该是该单元格中具有最高值的矩阵的名称。因此,如果 3 个矩阵中的第一个值(1 列,1 行)相应地为 2, 5, 8,则结果矩阵的第一个值应为 3(或 3 个矩阵的名称)。

【问题讨论】:

    标签: matlab matrix compare


    【解决方案1】:

    编辑 由于我不知道 max-function 的第二个参数,这里是你不应该使用的:

    旧 好吧,又快又脏:

    x=[2 5 8];
    w=max(x)
    [~,loc] = ismember(w,x)
    

    【讨论】:

    • 这个问题是指矩阵,而不是单个值
    【解决方案2】:

    如果这三个矩阵是 A、B、C,那么这样做:

    [~, M] = max(cat(3,A,B,C),[],3);
    

    它创建了一个 3D“矩阵”并在第三个维度上最大化。

    【讨论】:

    • 这给了我最高的价值,但据我所知,他(或她)正在要求这个职位......
    • +1: 我不知道你可以得到索引作为第二个参数
    【解决方案3】:

    在第三维连接它们,并使用 max 的 SECOND 输出来得到你想要的东西

    A = rand(3,3);
    B = rand(3,3);
    C = rand(3,3);
    
    D = cat(3, A, B, C)
    
    [~, Solution] = max(D, [], 3)
    

    例如:

    D =
    
    ans(:,:,1) =
    
       0.70101   0.31706   0.83874
       0.89421   0.33783   0.55681
       0.68520   0.11697   0.45631
    
    ans(:,:,2) =
    
       0.268715   0.213200   0.124450
       0.869847   0.999649   0.153353
       0.345447   0.023523   0.338099
    
    ans(:,:,3) =
    
       0.216665   0.297900   0.604734
       0.103340   0.767206   0.660668
       0.127052   0.430861   0.021584
    
    Solution =
    
       1   1   1
       1   2   3
       1   3   1
    

    【讨论】:

    • @user2661122 没问题,欢迎来到 SO。如果答案是正确的,您应该通过单击问题左上角的勾号轮廓来接受它。此外,如果您发现某个答案有帮助,您还可以通过单击左上角的向上三角形来给它一个赞。
    猜你喜欢
    • 1970-01-01
    • 2010-10-30
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多