请问matlab如何找到一个二维数组中,第一列和第二列相同的,但第三列数值最大的那组数或者第四列数?

如题所述

%% 数据a定义在这里
[tmp, I, J] = unique(a(:,[1 2]), 'rows');
l = zeros(length(I), 1);
for i = 1:length(I)
    [tmp, t] = max(a(J==i, 3));
    l(i) = find(cumsum(J==i) == t, 1, 'first');
end
l
a(l,:)

如果你用MATLAB R2009b以上版本,上述代码中的tmp都可改成符号‘~’。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-14
假设A是你的二维数组,下面的代码能输出你要的那一行

rows=size(A,1);
cmax=min(A(:,3));
for i=1:1:rows
if A(i,1)==A(i,2)
if A(i,3)>=cmax
cmax=A(i,3);
k=i;
end
end
end
A(k,:)