Matlab 版 (精华区)

发信人: zjliu (秋天的萝卜), 信区: Matlab
标  题: [合集]再请教:怎样剔除一个向量中的重复元素
发信站: 哈工大紫丁香 (2003年06月04日20:40:30 星期三), 站内信件


────────────────────────────────────────
 xuxi (HiaHiaHiaHia)                  于 2003年06月02日19:31:08 星期一 说道:

比如
i=[1 2 2 3]
now I want to get j=[1 2 3] 
how to?
thanks

────────────────────────────────────────
 Epoch (J2000.0)                      于 2003年06月02日20:20:52 星期一 说道:

笨办法。假设i是排好的。
i(1:3)-i(2:4),find,......

────────────────────────────────────────
 zjliu (秋天的萝卜)                   于 2003年06月02日21:05:06 星期一 说道:

刚找到一个函数
j=unique(i)

────────────────────────────────────────
 hotboy (热血男儿)                    于 你相同的元素是挨在一起的吗?
我提供一个相同元素可不再一起的同元素剔除代码?如下
如I=[1 2 2 3 4 3 5 3]

>> a=length(I);
>> [I1,ind1]=sort(I);
>> I2=[0,I1(1:a-1)];
>> ind2=find((I1-I2)==0);
>> I(ind1(ind2))=[]

you will find I=[1 2 3 4 5]


────────────────────────────────────────
 zjliu (秋天的萝卜)                   于 2003年06月02日21:05:52 星期一 说道:

呵呵,我的简单些

────────────────────────────────────────
 hotboy (热血男儿)                    于 还是版组zjliu厉害,我服了。您是怎么找到的?????我又复杂化了。


不过刚才我看了一下帮助,我的代码可以不改变原来元素的位置。



────────────────────────────────────────
 zjliu (秋天的萝卜)                   于 2003年06月02日21:16:32 星期一 说道:

我呀,只是在书上看到的,
你的方法也不错,
unique(i)
给出的结果好像是从大到小

────────────────────────────────────────
 Ustcer (山城棒棒儿军)                于 


那请看这个是什么回事?
>> I=[4 1 3 9 0 3 1 9];
>> a=length(I);
>> [I1,ind1]=sort(I);
>> I2=[0,I1(1:a-1)];
>> ind2=find((I1-I2)==0);
>> I(ind1(ind2))=[]

I =

     4     1     3     9

>> 

--


http://www.cheunghoyee.com/bbs/uploadFace/242_200341416215150326.gif




※ 来源:.哈工大紫丁香 bbs.hit.edu.cn [FROM: 202.103.207.58]

────────────────────────────────────────
 hotboy (热血男儿)                    于 谢谢Ustcer提醒:
我修正了bug,代码改为:
>>a=length(I);
>> [I1,ind1]=sort(I);
>> I2=[I1(a),I1(1:a-1)];
>> ind2=find((I1-I2)==0);
>> I(ind1(ind2))=[]

如果I=[4 1 3 9 0 3 1 9];
you will find 
I=[4 1 3 9 0]


────────────────────────────────────────
 xuedy (dingyu)                       于 看了一下unique的代码似乎很繁,用matlab命令可以简单写成
B=sort(A);
B(find(diff(B)==0)=[];


────────────────────────────────────────
 hotboy (热血男儿)                    于 你这样写的前提是相同元素挨在一起啊。


────────────────────────────────────────
 ghb (闭门修炼 之 桌子开花)           于 2003年06月03日10:32:20 星期二 说道:

不是的,薛老师的程序是对的,在第一句话中B=sort(A);已经对A进行了排序,并赋值给B
第二句好像少了个')'.hehe

────────────────────────────────────────
 ghb (闭门修炼 之 桌子开花)           于 2003年06月03日10:33:59 星期二 说道:

                  ~~~~是从小到大

────────────────────────────────────────
 Systems (Control is Controlling Myself)  于 2003年06月03日10:38:02 星期二 说道:

那不是把A重排了?如果人家要求A不重排呢?

────────────────────────────────────────
 ghb (闭门修炼 之 桌子开花)           于 2003年06月03日10:43:06 星期二 说道:

前面已经给出了源代码

────────────────────────────────────────
 xuxi (HiaHiaHiaHia)                  于 2003年06月03日13:08:11 星期二 说道:

多谢大家热情帮忙
有了matlab版 毕业设计不用愁 ^_^

────────────────────────────────────────
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.352毫秒