finding Missing elements in a vector

1 view (last 30 days)
I have a vector P =
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
19
20
21
3
23
24
6
26
27
28
29
30
31
32
As per the ascending order (1 2...15..32) of vector P, the elements 18,25,28 are missing and their position is occupied by the elements 2,3,6. now i want a vector which indicates this numbers like n=[2 3 6]. if elements are in order perfectly (1:10), I don't want new vector n.

Accepted Answer

Luca Amerio
Luca Amerio on 26 May 2015
This will do the trick
P(~(P==1:length(P)))
just for clarification
P==1:length(P)
returns a logical array of the position occupied by the right number.
~(P==1:length(P))
is the logical array of the position occupied by the WRONG number
P(~(P==1:length(P)))
get the values in those positions.
  5 Comments

Sign in to comment.

More Answers (1)

Andrei Bobrov
Andrei Bobrov on 26 May 2015
out = P([1;diff(P)] < 0);
  5 Comments
Andrei Bobrov
Andrei Bobrov on 26 May 2015
P(strfind([P(1);diff(P(:))]' ~= 1,[1 1]))

Sign in to comment.

Categories

Find more on Data Type Conversion in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!