Mapping elements of a matrix using a vector array

15 次查看(过去 30 天)
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.

采纳的回答

the cyclist
the cyclist 2014-5-21
编辑:the cyclist 2014-5-21
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.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by