S
, benzersiz öğeleri olan bir vektörü ve s
bir alt kümesini, aynı zamanda benzersiz öğelerle de yapın; ör. S={1,2,3,4,5,6}
ve s={1,3,4,6}
. S[[i]]
s
bir eleman ise, şimdi bir vektör C=[7,0,8,9,0,7]
oluşturabilir nasıl bir vektör c={7,8,9,7}
verilen diğer bir deyişle, daha sonra C[[i]]
başka s
içinde S[[i]]
, sıfır ile aynı dizin ile c
eleman eşittir. Bu çalışır, ancak bir MATLAB geçmişten gelerek, ben for
döngüler nefret ve yukarıdaki işlem Matlab'de önemsiz bir indeksleme operasyonuMathematica'da dizin oluşturma
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;]];
gibi ne var
şu anda görünüyor. Eminim bunu başarmak için daha akıllı bir yol var, bir matematiksel stili. Önerisi olan var mı? böylece c veya 0'dan bir unsuru biriyle S
Bu aşağıdaki yanıtları ile ilgili değil, ama 'C = Array daha iyi C = ConstantArray [0, Uzunluk' şeklinde ifade [0 & ...] 'edilir [S]] 've önyükleme yapmak için on kat daha hızlı. –