MATLAB Answers

How to find what number is missing from a range inside of an array?

33 views (last 30 days)
Brett Baxter
Brett Baxter on 24 Sep 2020 at 21:05
Commented: Adam Danz on 24 Sep 2020 at 22:40
I wanted to know if there was anyway to get matlab to tell me what number was missing from an array of numbers? Kind of like a sudoku problem, I wanted to have matlab look at each row or column in an array and tell me what number from a range of numbers is missing. So, for example, if my array looks like this:
x = 5x5 array
[1 2 0 4 5
2 0 3 4 5
4 5 1 0 2
0 3 4 5 1
1 0 4 3 5]
The numbers in the array can be in any particular order, I just threw this one together for example. In this example, each row is made of elements of numbers on a range 1:5, with zero being the number that is missing from each row within that range. I know how to find all the indices outside of the range 1:5, but I wanted to know if there was a way to return what values are actually missing from each row? So, for example, I wanted to know if I can get matlab to tell me something like,
ans = 5x1 array
[3
1
3
3
2
2]
So these are the numbers that are missing from each row. Can I get matlab to do this?

  0 Comments

Sign in to comment.

Accepted Answer

Adam Danz
Adam Danz on 24 Sep 2020 at 21:14
Example
full = [1;2;3;4;5];
sample = [2;4;5];
idx = ismember(full, sample);
full(~idx)

  6 Comments

Show 3 older comments
Adam Danz
Adam Danz on 24 Sep 2020 at 21:58
The two input terms are in different order than in my answer. That matters!
Also, my answer works with vectors while yours contains a vector and a matrix.
ismember(A,B) returns a logical array the same size as A where "true" indicate that the elements of A are anywhere in B.
If you're performing this operation on columns of a matrix, loop through the columns so you're also working with vectors.
Brett Baxter
Brett Baxter on 24 Sep 2020 at 22:23
okay, so I need it to check each row or column individually? Like, I need to have row 1 be a vector, then row 2, then 3 etc?
Adam Danz
Adam Danz on 24 Sep 2020 at 22:40
If you want to know which elements in A are missing in the entire matrix, use
ismember(ColumnVector, matrix(:))
If you want to know which elements are missing in each row or column you'll need to loop through the rows/columns.

Sign in to comment.

More Answers (0)

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!