# How to make a unique vector

조회 수: 3 (최근 30일)
Yingquan Li . 2011년 7월 6일
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 2011년 7월 6일
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
##### 댓글 수: 0표시 이전 댓글 수: -1숨기기 이전 댓글 수: -1

댓글을 달려면 로그인하십시오.

Oleg Komarov 2011년 7월 6일
##### 댓글 수: 0표시 이전 댓글 수: -1숨기기 이전 댓글 수: -1

댓글을 달려면 로그인하십시오.

Paulo Silva 2011년 7월 6일
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
##### 댓글 수: 0표시 이전 댓글 수: -1숨기기 이전 댓글 수: -1

댓글을 달려면 로그인하십시오.

Yingquan Li 2011년 7월 6일
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 2011년 7월 6일
well you keep making a smaller by removing elements but the for-loop wants to go to it's original length.

댓글을 달려면 로그인하십시오.

### 카테고리

Help CenterFile Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기

### Community Treasure Hunt

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

Start Hunting!