Create an array whose values depend on another array

If I have an array like
C = [1 2 3 4 5 2 4 5 6 7 6 2 5 7 8]
I would like to obtain another array where the value of :
1,4,7 are substitued with 1.
2,5 with 2
3,6,8 with 3
to obtain:
F = [1 2 3 1 2 2 1 2 3 1 3 2 2 1 3]
F should be a numeric vector and not a string or a character.
Which is the fastest and most efficient way?

 采纳的回答

C=[1 2 3 4 5 2 4 5 6 7 6 2 5 7 8]
F=C;
idx=find(C==1 | C==4 | C==7);
F(idx)=1;
idx=find(C==2 | C==5);
F(idx)=2;
idx=find(C==3 | C==6 | C==8);
F(idx)=3;
F
Commad Window:
C =
1 2 3 4 5 2 4 5 6 7 6 2 5 7 8
F =
1 2 3 4 2 2 4 2 3 1 3 2 2 1 3

5 个评论

You don’t need find() here, use logical indexing.
yes @madhan ravi give me minutes please
This way
C=[1 2 3 4 5 2 4 5 6 7 6 2 5 7 8]
F=C;
F(C==1 | C==4 | C==7)=1
F(C==2 | C==5)=2
F(C==3 | C==6 | C==8)=3
F
right?
Thanks always!
(C==1 | C==4 | C==7) * 1 + (C==2 | C==5) * 2 +...
(C==3 | C==6 | C==8) * 3

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息

产品

版本

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by