How to find what number is missing from a range inside of an array?
44 views (last 30 days)
Show older comments
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
Accepted Answer
Adam Danz
on 24 Sep 2020
Check out Lia = ismember(A,B)
Example
full = [1;2;3;4;5];
sample = [2;4;5];
idx = ismember(full, sample);
full(~idx)
6 Comments
Adam Danz
on 24 Sep 2020
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.
More Answers (0)
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!