我有一个像这样的矩阵:
A = [1 2 3
3 4 5
6 8 7
7 9 11
12 13 15
17 18 19
];
如何计算包含相同元素的行?在这种情况下,它将导致4:第1行和第2行包含3;第3行和第4行包含7。 谢谢......
答案 0 :(得分:1)
A = [1 2 3
3 4 5
6 8 7
7 9 11
12 13 15
17 18 19
]
B = unique(A)
L = length(B)
Z = []
R = 0
for t=1:L
[C,D] = ismember(A,B(t))
SS = sum(sum(D))
if(SS>1)
Z(end+1) = B(t)
R = R + nnz(sum(D,2))
end
end
在此末尾,向量Z将包含所有重复值 R将为您提供重复行的总数
这已经非常粗略地完成了。但是通过一些努力,您可以通过某种方式消除循环来改进此代码....
希望有所帮助
答案 1 :(得分:1)
一个解决方案,并没有真正优化,但如果您的矩阵不是很大,它将正常工作。
A = [1 2 3;
3 4 5;
6 8 7;
7 9 11;
12 13 15;
17 18 19];
for ii = 1:size(A,1)
B = A;
B(ii,:) = [];
ind(ii,:) = sum(ismember(unique(A(ii,:)),unique(B)))>0; %check if there is a common value for the row ii.
end
nbrrow = sum(ind) %number of row that contain a similar value.
答案 2 :(得分:0)
这是一种快速的方法,对于重复超过2行(但不在同一行中)的值也是健壮的:
[~,~,ci] = unique(A);
u = accumarray(ci,1);
row_count = sum(u(u>1))