如题所说,在生成了一个列数固定而函数最大的矩阵时,我需要找到矩阵中出现次数最多的行向量。如何操作?
思路:
对矩阵排序,再对排序后的矩阵求差分,统计差分绝对值之和,若此值为0表示两行相同,否则不相同,再统计差分值连续为0最多的位置下标。
A = [1 2 3
1 1 2
1 2 3
1 0 3
1 2 3
0 0 0
1 1 1
1 2 3
1 1 2 ];
B = sort(A); % 对A排序
S = sum( abs(diff( B )),2 ); %求矩阵行差分,并统计差分绝对值之和,差分绝对值之和为0表示量行相同
n = 1; % 行标识
ind = 0; % 行号下标
for ii = 1:length(S)
if S(ii) == 0
if ii>1 && S(ii-1) == 0
n = n+1;
else
ind = ii;
n = 1;
end
end
end
a = B(ind+1,:) % 重复最多的行
结果:
a =
1 2 3