如何提取第1列中元素最大的行?

时间:2015-11-13 09:11:10

标签: matlab matrix

我有以下数据: EG1:

5.34   -32.82    0.71
7.65   -32.74    0.67
9.89   -32.76    0.69
13.81   -32.74    0.68
17.20   -33.27    0.71
22.83   -33.28    0.61
27.10   -33.40    0.67
29.22   -33.20    0.66

输出:比较max(:,1),我需要提取29.22 -33.20 0.66 EG2:

4.58   -49.98    1.27
5.84   -50.13    1.23
7.33   -50.15    1.24
10.39   -50.18    1.28
13.60   -50.03    1.27
17.73   -50.07    1.34
10.99   -49.90    1.41
10.81   -49.76    1.43

输出应为:17.73 -50.07 1.34 编辑:

4.58    -49.98  1.27    5.31    -38     1.12
5.84    -50.13  1.23    7.65    -38     1.11
7.33    -50.15  1.24    9.88    -38.01  1.12
10.39   -50.18  1.28    13.78   -38     1.12
13.6    -50.03  1.27    17.2    -38.07  1.13
17.73   -50.07  1.34    22.8    -38.06  1.14
10.99   -49.9   1.41    27.19   -38.06  1.14
10.81   -49.76  1.43    29.29   -38.02  1.13

输出:为每个连续的列执行(a == max(a(:,1)),:)

17.73   -50.07  1.34
29.29   -38.02  1.13

1 个答案:

答案 0 :(得分:4)

A=sortrows(A);
A(end,:)
ans =
   29.2200  -33.2000    0.6600

sortrows按行排序矩阵,第一行的最大元素显然在末尾。因此,提取end行并完成。

如果不对数据集进行排序,速度会更快:

A(A==max(A(:,1)),:)

这会在A达到最大值的第一列中找到该条目,并将其用作logical index来提取整行。