matlab计数行包含矩阵中的相同元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab计数行包含矩阵中的相同元素相关的知识,希望对你有一定的参考价值。

我有一个像这样的矩阵:

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.谢谢...

答案
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将给出重复行的总数

这已经非常粗略地完成了。但是通过一些努力你可以通过某种方式消除循环来改进这个代码....

希望能帮助到你

另一答案

一个解决方案,没有真正优化,但如果您的矩阵不是那么大,它将正常工作。

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行(但不在同一行)的值也是健壮的:

[~,~,ci] = unique(A);
u = accumarray(ci,1);
row_count = sum(u(u>1))

以上是关于matlab计数行包含矩阵中的相同元素的主要内容,如果未能解决你的问题,请参考以下文章

matlab怎样删除1行多列矩阵的一个指定值元素,删除完后,元素后面的值向前移动,组成新的矩阵

求加权平均的图像融合matlab 程序

Matlab:按行组合多个矩阵

车辆计数基于matlab形态学停车场车辆计数含Matlab源码 628期

怎么用MATLAB比较两个行向量中相同位置的元素

MATLAB学习四:矩阵寻访