【问题标题】:Find column and row indices of a matrix sorted in ascending order查找按升序排序的矩阵的列和行索引
【发布时间】:2017-08-11 17:38:09
【问题描述】:

我想在 Matlab 中解决以下任务: 如果我有一个通用的矩阵 A,即:

A = [
1, 10, 8;
2, 2, 4;
3, 4, 50];

从 min 到 max 的值是:

1: pos. (1,1)
2: pos. (2,1)
2: pos. (2,2)
3: pos. (3,1)
4: pos. (2,3)
4: pos. (3,2)
...

所以这个函数的输出将是两个向量:

x = [1,2,2,3,2,3,...];
y = [1,1,2,1,3,1,...];

对应矩阵A的最小值的行列索引。

提前致谢!

【问题讨论】:

    标签: arrays matlab sorting matrix


    【解决方案1】:

    您需要将sortind2sub 结合起来:

    [vals,linpos] = sort(A(:))
    [x,y] = ind2sub(size(A),linpos)
    

    vals.' =  1     2     2     3     4     4     8    10    50
    x.'    =  1     2     2     3     3     2     1     1     3
    y,'    =  1     1     2     1     2     3     3     2     3
    

    与您所需输出的差异是由输入数据中多次出现相同数字引起的。如果这很重要,请指定应该应用什么规则。

    【讨论】:

    • 如果出现多次,则不应应用任何规则。所以你的答案就是解决方案!非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 2021-08-06
    • 2012-04-22
    • 2018-04-29
    • 2017-02-03
    • 1970-01-01
    相关资源
    最近更新 更多