Пусть S
- вектор с уникальными элементами, а s
его подмножество, также с уникальными элементами;например, S={1,2,3,4,5,6}
и s={1,3,4,6}
.Теперь, учитывая еще один вектор c={7,8,9,7}
, как я могу создать вектор C=[7,0,8,9,0,7]
, т. Е. Если S[[i]]
является элементом в s
, то C[[i]]
равен элементу в c
с тем же индексом, что иS[[i]]
в s
, иначе ноль.
То, что у меня сейчас есть, выглядит как
C=Array[0&,Length[S]];
j=1;
For[i=1,i<=Length[S],i++,If[MemberQ[s,S[[i]]],C[[i]]=c[[j]];j=j+1;]];
Это работает, но, исходя из фона MATLAB, я ненавижу циклы for
ивышеуказанная операция является тривиальной операцией индексации в matlab.Я уверен, что есть более разумный способ сделать это, в стиле la mathematica.У кого-нибудь есть предложения?