Replace interior of matrix with zeros
You can do:
x[[2 ;; -2, 2 ;; -2]] = 0;
x
or
ReplacePart[x, {i, j} -> 0 /; And @@ MapThread[Less, {{1, 1}, {i, j}, Dimensions@x}]]
Just another alternative.
x - ArrayPad[ArrayPad[x, -1], 1] // MatrixForm
Although I believe that Kuba's first method is the best approach here is another:
zerofill[a_] := a (1 - BoxMatrix[#/2 - 2, #]) & @ Dimensions @ a
Now:
Array[Times, {5, 8}] // zerofill // MatrixForm
$\left( \begin{array}{cccccccc} 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 \\ 2 & 0 & 0 & 0 & 0 & 0 & 0 & 16 \\ 3 & 0 & 0 & 0 & 0 & 0 & 0 & 24 \\ 4 & 0 & 0 & 0 & 0 & 0 & 0 & 32 \\ 5 & 10 & 15 & 20 & 25 & 30 & 35 & 40 \end{array} \right)$