求一个matlab程序

来源:百度知道 编辑:UC知道 时间:2024/06/29 21:03:27
问题是这样子:

我有一个4列400行的表,表中的值都是1、2、3、4中的一个数字,需要用matlab将重复的行删除,并统计每种行重复的行数。

我没有用过matlab,今天尝试写了下m文件,没有得到正确的结果,烦请朋友们帮忙了。

我写的代码:(表保存为一个矩阵data)
t=data;
[row,col]=size(t);
m=0;
for i=1:row
a=num2str(t(i,:));
for j=i+1:row
b=num2str(t(j,:));
if strcmp(a,b)
c(j-m,:)=[];
m=m+1;
end
end
end
回adam2030:谢谢你。你的程序思路很清晰,很好懂。由find函数得到所有与第i行重复的行号,计算其长度从而得到与第i行重复的行的个数。
这个结果与原题意略有不符,因为这个程序没有实现删除重复的行。
我早上尝试自己改了一下,没有成功,还得麻烦大大帮忙了。

终于编出来了,呵呵,我是先置重复列的值为全0,然后再消除全0行。
谢谢你启发了我的思路。

t=data;
[row,col]=size(t);
m=zeros(row,col+1);
m(:,[1 2 3 4])=t(:,:)
for i=1:row
j=find(t(:,1)==t(i,1)&t(:,2)==t(i,2)&t(:,3)==t(i,3)&t(:,4)==t(i,4))
m(i,col+1)=length(j)
end

返回的m矩阵为5列,row行,每一行的前四个为矩阵本身的数据,第5个为重复的个数。