How to find single index values in a matrix?

B1 = [2 4 6 8; 10 12 14 16; 18 20 22 24; 26 28 30 32]
idx_8=find(B1==8)
[row,column]=find(B1~=8)
RowColumn = [row:column]
Find the single index values for 26, 4, and 28?
How is a matrix indexed with single indexing values?

3 Comments

[was_found, idx] = ismember([26 4 28], B1);
idx will be 0 in places the original was not found.
Is that the code to find single index values? And do I insert anything to the matrix [was_found]?
[was_found, idx] = ismember([26 4 28], B1);
will assign to two variables: was_found and idx. was_found will be true for each element of [26 4 28] that was located somewhere in B1, and will be false for any element that was not found in B1. idx will be 0 for any element that was not found, and otherwise will be the index of the "first" location of the value in B1. idx will be a "linear index"

Sign in to comment.

 Accepted Answer

Linear_indices = find(ismember(B1,[26 4 28])); % you mean linear indices by saying single indices
B1(Linear_indices) % would give [26 4 28]

5 Comments

Careful about the order returned, and also duplication behavior, test with
B1=repmat([0 28 4 26]',1,4)
to see my points.
True should have mentioned it, thanks sir Walter's approach above prevents it.
Yes so Walter should post his solution as answer and would be accepted.
Ok so don't expect me to delete my answer though.
No IMO you should keep it. The difference is interesting to highlight.

Sign in to comment.

More Answers (1)

[was_found, idx] = ismember([26 4 28], B1);
will assign to two variables: was_found and idx. was_found will be true for each element of [26 4 28] that was located somewhere in B1, and will be false for any element that was not found in B1. idx will be 0 for any element that was not found, and otherwise will be the index of the "first" location of the value in B1. idx will be a "linear index"

Tags

Community Treasure Hunt

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

Start Hunting!