I wanted to create a matrix by following way:
NN = 3;
M[x_, J2_, J3_, a_]:=
With[
{d = (1. + J3)/2.,
f = (1.+ Cos[a])/2.,
g = (1. - Cos[a])/2.,
h = -(J3 + Exp[I*x])/2.,
hs = -(J3 + Exp[-I*x])/2.,
t1 = Table[0., {i, 1, 8*NN}, {j, 1, 8*NN}],
Do[t1[[i,i]] = 5., {i, 1,8*NN}],
Do[t1[[i, i]] = d, {i, 1, 8*NN}]}],
Do[
{t1[[i, i + 1]] = f,
t1[[i, i + 3]] = g,
t1[[i + 1, i + 2]] = g,
t1[[i + 2, i + 3]] = f},
{i, 1, 8*NN-3, 4}]}, t1];
M[0., 1., 2., 0.] // MatrixForm
But it shows an error:
With::lvws: Variable Do[t1[[i,i]]=5., {i, 1, 8}] in local variable specification {d = (1. + 2.)/2., f = (1. + Cos[0.])/2., g = (1. -Cos[0.])/2., h = -((2. + Exp[I 0.])/2.), hs = -((2. + Exp[-I 0.])/2.), t1 = Table[0., {i, 1, 8 NN}, {j, 1, 8 NN}], Do[t1[[i, i]] = 5., {i, 1, 8}]} requires a value.