nancy2008521 发表于 2008-4-21 15:57

如何去除矩阵中的重复元素

我有一组数据,其中有很多重复的数据,用什么命令去除这些重复的数据呢?数据如下:
297.0000141.0000
298.0000141.1667
298.0000141.1667
299.0000141.8333
299.0000141.8333
300.0000142.0000
300.0000142.0000
301.0000142.0000
301.0000142.0000
302.0000141.8333
302.0000141.8333
303.0000141.1667
303.0000141.1667
304.0000141.0000
304.0000141.0000
305.0000141.0000
305.0000141.0000
306.0000141.0000
306.0000141.0000
307.0000141.0000
307.0000141.0000
308.0000141.0000
308.0000141.0000
309.0000141.0000
309.0000141.0000
310.0000141.1667
310.0000141.1667
311.0000142.0000
311.0000142.0000
312.0000143.0000
312.0000143.0000
312.8333144.0000
312.8333144.0000
313.1667145.0000
313.1667145.0000
314.0000145.8333

[ 本帖最后由 eight 于 2008-4-21 19:57 编辑 ]

w89986581 发表于 2008-4-21 16:34

help sort
help diff
help find

2365215 发表于 2008-4-21 17:20

那我这个问题是否也这个类似,也可以用同类的方法么?
http://forum.vibunion.com/forum/thread-62565-1-1.html

sogooda 发表于 2008-4-21 17:48

doc unique

ch_j1985 发表于 2008-4-21 17:52

原帖由 nancy2008521 于 2008-4-21 15:57 发表 http://www.chinavib.com/forum/images/common/back.gif
我有一组数据,其中有很多重复的数据,用什么命令去除这些重复的数据呢?数据如下:
297.0000141.0000
298.0000141.1667
298.0000141.1667
299.0000141.8333
299.0000141.8333
300.0000 ...

呵呵,自己编了一段程序,也不知能不能让你满意,如果高手有更好的方法,请不吝赐教:
fid=fopen('data.txt');
=fscanf(fid,'%f',inf);
fclose(fid);
B=A';
D=[];
for i=1:count/2
    C(i,1)=B(2*i-1);
    C(i,2)=B(2*i);
end
for i=1:count/2
    t=C(i,1);
    for j=i+1:count/2
    if C(j,1)==t
      C(j,1:2)=0;
    end
    end
end
D=find(C(:,1)~=0);
C(D,:)

w89986581 发表于 2008-4-21 17:53

是的,sort() 排列; diff() 做两次差分; find() 找出相同数据的点; 再删除重复数据或者其它操作。

心灯 发表于 2008-4-21 18:24

4楼的unique是最好的方式,直接用

AA = 该数组;
aaa=unique(AA,'rows');

就已经完成了整个过程(认为一行两个元素都一样才是重复的元素),简单快捷。

eight 发表于 2008-4-21 19:57

这个问题已经讨论过多次,请楼主先搜索一下,unique 是最好的方法,不过精度方面不能要求太大
页: [1]
查看完整版本: 如何去除矩阵中的重复元素