Mapping elements of a matrix using a vector array
5 views (last 30 days)
Show older comments
I have a matrix named A with size N×3. The values of the elements of A ranges from 1 to M. For example, A with size 8×3:
A = [ 1 2 3;
1 4 5;
5 6 7;
1 3 4;
5 6 7;
1 4 7;
4 3 2;
7 8 9]
B is a vector array whose elements are the values of element of A. In the example above, B with size 9×1:
B = [1 2 3 4 5 6 7 8 9]
I have another vector array named C with the size of B with which I want to replace element of B in A. In fact, C represents whether the elements of B in A has repeated more than for example 2. In my example, C with size 9×1:
C = [0 0 0 0 0 0 0 1 1]
Here is the expected result, where the elements 1 to 7 are replaced by 0 and 8 and 9 are replaced by 1:
Anew = [ 0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 1 1]
How can I replace the elements of B in A with its corresponding values using C? Thank you.
Accepted Answer
the cyclist
on 21 May 2014
Edited: the cyclist
on 21 May 2014
I am not 100% sure of which of the following two possibilities you want, given your example, but I think either
Anew = ismember(A,B(logical(C)))
or
[~,idx] = ismember(A,B);
Anew = C(idx)
is what you want. I think it's the latter.
1 Comment
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!