matlab寻找矩阵中前两列相同的行,返回相同次数最多的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab寻找矩阵中前两列相同的行,返回相同次数最多的相关的知识,希望对你有一定的参考价值。

新手,想实现以下功能,希望得到帮助,谢谢。
假设有一个矩阵A(10行6列)
23 11 202 346 222 345
19 -1 203 346 222 345
20 -7 202 352 222 345
11 27 136 364 125 337
19 28 144 365 125 337
14 15 148 348 125 337
14 15 138 350 124 335
24 11 153 347 129 336
23 11 153 347 130 335
23 11 153 347 130 336
我希望找到前两列出现相同次数最多的行,在上面的列子中,我就是希望23,11这些行被提取出来,
组成一个新的矩阵B。

23 11 202 346 222 345
23 11 153 347 130 336
23 11 153 347 130 335

注意,如果存在两组以上相同次数最多的行,算法只会取其中一组。

A=[23 11 202 346 222 345
19 -1 203 346 222 345
20 -7 202 352 222 345
11 27 136 364 125 337
19 28 144 365 125 337
14 15 148 348 125 337
14 15 138 350 124 335
24 11 153 347 129 336
23 11 153 347 130 335
23 11 153 347 130 336]
[B,B,I]=unique(A(:,1:2),'rows');
[B,J]=max(accumarray(I,1));
B=A(I==J,:)
参考技术A j=1;
for i=1:10
if (A(i,1)==23)&(A(i,2)==11)
temp(j,:)=A(i,:);
j=j+1;
end
end

temp就是你要的矩阵追问

你好,前提是我不知道那两个数会出现最多,我真实的矩阵有1000多行

matlab怎样通过for循环语句找出两矩阵相同的行和列?

假如现在有两个4*4的矩阵,已知它们有某几列是相同的(但具体是哪几并不知道),如何通过for循环语句将它们找出来并合并成为新的矩阵?

a=[1:4;2:5;3:6;4:7]
b=[1:4;2 0 0 5;3:6;4:7]
c=zeros(4,1);
n=0;
for i=1:4
aa=a(:,i);
for j=1:4
bb=b(:,j);
if bb==aa
n=n+1;
c(n)=i;
disp(['矩阵a和b的第' num2str(i) '列相同'])
end
end
end
xin_juzhen=a(:,c(1:n))
参考技术A A&B present the two arrays.
for i=A
for j=B
if i==j
% MARK %
end
end
end

以上是关于matlab寻找矩阵中前两列相同的行,返回相同次数最多的的主要内容,如果未能解决你的问题,请参考以下文章

matlab怎样通过for循环语句找出两矩阵相同的行和列?

Matlab中,若A=[1,2;3,4;5,6;7,8],B=[3,4;7,8],如何删除A中与B中元素相同的行,得到C=[1,2;4,5]?

matlab矩阵中如何去掉重复的行和找到相同的行

如何使用MATLAB进行元胞数组批量提取数据?

如何从包含前两列组合的熊猫数据框中删除行

matlab矩阵里有很多有相同值的元素,如何剔除多余的,每个值只留一个元素