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!

Translated by