How to make a unique vector

Hello. Given this vector:
a = [22 20 21 20 24 25 26 22]
I want it to return
[22 20 21 24 25 26]
The unique function works but, I don't want the array to increase in order. I'm new and thank you in advance.

回答 (4 件)

D
D 2011 年 7 月 6 日

3 投票

Also, from stackoverflow (I don't remember where, but if I find the post, I'll link it):
[junk,index] = unique(a,'first'); % removes non-unique, saves order in "index"
a = a(sort(index)); % sorts according to index
Paulo Silva
Paulo Silva 2011 年 7 月 6 日

0 投票

a = [22 20 21 20 24 25 26 22] %your vector
b=unique(a); %get the unique ones
d=perms(b); %get all possible permutations of the vector values
%sort the rows so we can avoid the first one 20 21 ...
d=sortrows(d); %sort the rows
p=randi([2 size(d,1)]); %get a random row of the array
%you can also avoid the last one if you want by using the next line instead
%p=randi([2 size(d,1)-1]);
v=d(p,:) %get all the values from the row selected
Yingquan Li
Yingquan Li 2011 年 7 月 6 日

0 投票

Hey guys, I tried: for i = 1:length(a) for j = 2:length(a) if (a(i) == a(j)) a(j) = [] end end end
There was an error. I don't see what's wrong.

1 件のコメント

Sean de Wolski
Sean de Wolski 2011 年 7 月 6 日
well you keep making a smaller by removing elements but the for-loop wants to go to it's original length.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeShifting and Sorting Matrices についてさらに検索

タグ

質問済み:

2011 年 7 月 6 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by