【问题标题】:Split matrix according to specified order of values根据指定的值顺序拆分矩阵
【发布时间】:2012-07-25 00:40:10
【问题描述】:

很抱歉,如果以前有人问过这个问题,但我似乎找不到合适的答案!

我在 Matlab 中有这种矩阵:

1  0.2   0.3    1  5
1  0.25  0.36   1  6
1  0.3   0.3   -1  5
2  0.1   0.3    1  5
2  0.3   0.3   -1  5
2  0.6   0.4   -1  9 ......

矩阵实际上要长得多,并且在第一列中的值为 346。

如何根据第一列中值的特定顺序将矩阵拆分为更小的矩阵?例如,我需要按顺序排列第一列 = 160、130、256、2 的所有值的矩阵?

【问题讨论】:

  • 为了吸引更多答案,您应该添加与您正在使用的语言或工具相对应的标签。您可以通过editing your question 并在编辑页面底部添加标签来做到这一点。

标签: matlab sorting matrix


【解决方案1】:

假设 M 是您的 MatLab 矩阵。然后 find(M(:,1) == 7) 为您提供您正在寻找的那些行的索引。此外,您可以执行 M(M(:,1) == 7,:) 之类的操作来访问相应的子矩阵

【讨论】:

    【解决方案2】:

    要做到这一点grep

    grep -E '^(160|130|256|2)[ \t]'
    

    更新

    matlab 中,您可以使用比较运算符,例如如果data 是矩阵:

     data(data(:, 1) == 1, :)
    

    将返回第一列值为 1 的子矩阵。要将其应用于您的示例,可以这样做:

    subm = [];
    for i=[160, 130, 256, 2]
       subm = [subm; data(data(:, 1) == i, :);
    end
    

    【讨论】:

    • 对不起,我忘了说它是在 matlab 中
    • 用matlab版本修改了答案
    猜你喜欢
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多