利用ismember函数编个程序,可以解决这个问题:- function y=findsamerow(x)
- [m,n]=size(x);
- j=1:m;
- y=[];
- while 1
- if sum(j)==0
- break;
- else
- x0=x(j(find(j~=0,1,'first')),:);
- ind=find(ismember(x,x0,'rows')==1);% 记录行相同的序号
- y=[y,0,ind']; % 用0隔开相同的行,即两个0之间有多个非零,即表示这些行是一样的
- j(ind)=0; % 若零之间只有一个非零,则表示没有其他行与此行相同
- end
- end
复制代码 一些结果:
>> a=[1,2,3; 4,5,6; 7,8,9];
>> findsamerow(a)
ans =
0 1 0 2 0 3
>> a=[1,2,3; 4,5,6; 1,2,3];;
>>findsamerow(a)
ans =
0 1 3 0 2
>> a=[1,2,3; 1,2,3; 1,2,3; 4,5,6; 1,2,3; 4,5,6];
>> findsamerow(a)
ans =
0 1 2 3 5 0 4 6
[ 本帖最后由 ChaChing 于 2010-3-17 09:17 编辑 ] |