max = 10; L = 10.; dz = 1;
grid2 = Riffle[Table[-L/2 + (n - 1) dz, {n, 1, max, 2}], ConstantArray[0., max/2]]
(* or Riffle[Table[-L/2 + (n - 1) dz, {n, 1, max, 2}], 0., {2, -1, 2}] *)
(* {-5., 0., -3., 0., -1., 0., 1., 0., 3., 0.} *)
or
grid2b =Join @@ Table[{-L/2 + (n - 1) dz, 0.}, {n, 1, max, 2}]
(* {-5., 0., -3., 0., -1., 0., 1., 0., 3., 0.} *)
or
grid2c = Join @@ Thread[{Table[-L/2 + (n - 1) dz, {n, 1, max, 2}], 0.}]
(* {-5., 0., -3., 0., -1., 0., 1., 0., 3., 0.} *)
Update:
f0 = Module[{ca = ConstantArray[0., Length@#],
indices = Range[1, max, #2 + 1]}, ca[[indices]] = #[[indices]]; ca] &;
grid = Table[-L/2 + (n - 1) dz, {n, 1, max}];
f0[grid, 1]
(* {-5., 0., -3., 0., -1., 0., 1., 0., 3., 0.} *)
f0[grid, 2]
(* {-5., 0., 0., -2., 0., 0., 1., 0., 0., 4.} *)
Additional alternatives:
Using ReplacePart:
f1 = ReplacePart[#, Except[Alternatives @@ Range[1, max, #2 + 1]] -> 0.] &;
grid = Table[-L/2 + (n - 1) dz, {n, 1, max}];
f1[grid, 1]
(* {-5.,0.,-3.,0.,-1.,0.,1.,0.,3.,0.} *)
f1[grid, 2]
(* {-5.,0.,0.,-2.,0.,0.,1.,0.,0.,4.} *)
Using MapAt:
f2 = MapAt[0. &, #, {{Complement[Range[max], Range[1, max, #2 + 1]]}}] &;
grid = Table[-L/2 + (n - 1) dz, {n, 1, max}];
f2[grid, 1]
(* {-5.,0.,-3.,0.,-1.,0.,1.,0.,3.,0.} *)
f2[grid, 2]
(* {-5.,0.,0.,-2.,0.,0.,1.,0.,0.,4.} *)
with this
{-5., 0., 0., -2., 0, 0., 1., 0., 0., 4.}
– zenith Nov 10 '14 at 17:58MapAt[0.&,{-5,-4,-3,-2,-1,0,1,2,3,4},{{{2,3,5,6,8,9}}}] is not an
integer or a list of integers. " – zenith Nov 11 '14 at 10:18