How could we define the factorial of a matrix? Suppose I have a square matrix $\mathsf{A}$ with $\det \mathsf{A}\neq 0$.

How could we define the following operation? $$\mathsf{A}!$$

Maybe we could make some simple example, admitted it makes any sense, with 

$$\mathsf{A} =
\left(\begin{matrix}
1 &amp; 3 \\ 
2 &amp; 1 
\end{matrix}
\right)
$$
For any holomorphic function $G$, we can define a corresponding matrix function $\tilde{G}$ via (a formal version of) the Cauchy Integral Formula: We set
$$\tilde{G}(B) := \frac{1}{2 \pi i} \oint_C G(z) (z I - B)^{-1} \, dz ,$$
where $C$ is an (arbitrary) anticlockwise curve that encloses (once each) the eigenvalues of the (square) matrix $B$. Note that the condition on $C$ means that restrictions on the domain of $G$ determine restrictions on the domain of $\tilde{G}$.
So, we could make sense of the factorial of a matrix if we had a holomorphic function that restricted to the factorial function $n \mapsto n!$ on nonnegative integers. Fortunately, there is such a function: The function $$F: z \mapsto \Gamma(z + 1),$$ where $\Gamma$ denotes the Gamma function, satisfies $F(n) = n!$ for nonnegative integers $n$. (There is a sense in which $F$ is the best possible function extending the factorial function, but notice the target of that link really just discusses the real Gamma function, which our $\Gamma$ preferentially extends.) Thus, we may define factorial of a (square) matrix $B$ by substituting the second display equation above into the first:
$$\color{#df0000}{\boxed{B! := \tilde{F}(B) = \frac{1}{2 \pi i} \oint_C \Gamma(z + 1) (z I - B)^{-1} \, dz}} .$$
The (scalar) Cauchy Integral Formula shows that this formulation has the obviously desirable property that for scalar matrices it recovers the usual factorial, or more precisely, that $\pmatrix{n}! = \pmatrix{n!}$ (for nonnegative integers $n$).
Alternatively, one could define a matrix function $\tilde G$ (and in particular define $B!$) by evaluating formally the power series $\sum_{i = 0}^{\infty} a_k (z - z_0)^k$ for $G$ about some point $z_0$, that is, declaring $\tilde G(B) := \sum_{i = 0}^{\infty} a_k (B - z_0 I)^k$, but in general this definition is more restrictive than the Cauchy Integral Formula definition, simply because the power series need not converge everywhere (where it does converge, it converges to the value given by the integral formula). Indeed, we cannot use a power series for $F$ to evaluate $A!$ directly for our particular $A$: The function $F$ has a pole on the line segment in $\Bbb C$ with endpoints the eigenvalues of $A$, so there is no open disk in the domain of $F$ containing all of the eigenvalues of $A$, and hence there is no basepoint $z_0$ for which the series for $\tilde F$ converges at $A$.
We can define $\tilde G$ in yet another way, which coincides appropriately with the above definitions but which is more amenable to explicit computation: If $B$ is diagonalizable, so that we can decompose $$B = P \pmatrix{\lambda_1 &amp; &amp; \\ &amp; \ddots &amp; \\ &amp; &amp; \lambda_n} P^{-1} ,$$
for eigenvalues $\lambda_a$ of $B$ and some matrix $P$, we define
$$\tilde{G}(B) := P \pmatrix{G(\lambda_1) &amp; &amp; \\ &amp; \ddots &amp; \\ &amp; &amp; G(\lambda_n)} P^{-1} .$$ Indeed, by substituting and rearranging, we can see that this coincides, at least formally, with the power series characterization. There is a similar but more complicated formula for nondiagonalizable $B$ that I won't write out here but which is given in the Wikipedia article Matrix function.
Example The given matrix $A$ has distinct eigenvalues $\lambda_{\pm} = 1 \pm \sqrt{6}$, and so can be diagonalized as $$P \pmatrix{1 - \sqrt{6} &amp; 0 \\ 0 &amp; 1 + \sqrt{6}} P^{-1} ;$$ indeed, we can take $$P = \pmatrix{\tfrac{1}{2} &amp; \tfrac{1}{2} \\ -\frac{1}{\sqrt{6}} &amp; \frac{1}{\sqrt{6}}}.$$
Now, $F(\lambda_{\pm}) = \Gamma(\lambda_{\pm} + 1) = \Gamma (2 {\pm} \sqrt{6}),$
and putting this all together gives that
\begin{align*}\pmatrix{1 &amp; 3 \\ 2 &amp; 1} ! = \bar{F}(A) &amp;= P \pmatrix{F(\lambda_-) &amp; 0 \\ 0 &amp; F(\lambda_+)} P^{-1} \\ &amp;=  \pmatrix{\tfrac{1}{2} &amp; \tfrac{1}{2} \\ -\frac{1}{\sqrt{6}} &amp; \frac{1}{\sqrt{6}}} \pmatrix{\Gamma (2 - \sqrt{6}) &amp; 0 \\ 0 &amp; \Gamma (2 + \sqrt{6})} \pmatrix{1 &amp; -\frac{\sqrt{3}}{\sqrt{2}} \\ 1 &amp; \frac{\sqrt{3}}{\sqrt{2}}} .\end{align*}
Multiplying this out gives
$$\color{#df0000}{\boxed{\pmatrix{1 &amp; 3 \\ 2 &amp; 1} ! = \pmatrix{\frac{1}{2} \alpha_+ &amp; \frac{\sqrt{3}}{2 \sqrt{2}} \alpha_- \\ \frac{1}{\sqrt{6}} \alpha_- &amp; \frac{1}{2} \alpha_+}}} ,$$
where $$\color{#df0000}{\alpha_{\pm} = \Gamma(2 + \sqrt{6}) \pm \Gamma(2 - \sqrt{6})}. $$
It's perhaps not very illuminating, but $A!$ has numerical value
$$
\pmatrix{1 &amp; 3 \\ 2 &amp; 1}! \approx \pmatrix{3.62744 &amp; 8.84231 \\ 5.89488 &amp; 3.62744} .
$$
To carry out these computations, one can use Maple's built-in MatrixFunction routine (it requires the LinearAlgebra package) to write a function that computes the factorial of any matrix:
MatrixFactorial := X -&gt; LinearAlgebra:-MatrixFunction(X, GAMMA(z + 1), z);

To evaluate, for example, $A!$, we then need only run the following:
A := Matrix([[1, 3], [2, 1]]);
MatrixFactorial(A);

(NB executing this code returns an expression for $A!$ different from the one above: Their values can be seen to coincide using the the reflection formula $-z \Gamma(z) \Gamma(-z) = \frac{\pi}{\sin \pi z} .$ We can further simplify the expression using the identity $\Gamma(z + 1) = z \Gamma(z)$ extending the factorial identity $(n + 1)! = (n + 1) \cdot n!$ to write $\Gamma(2 \pm \sqrt{6}) = (6 \pm \sqrt{6}) \Gamma(\pm \sqrt{6})$ and so write the entries as expressions algebraic in $\pi$, $\sin(\pi \sqrt{6})$, and $\Gamma(\sqrt{6})$ alone. One can compel Maple to carry out these substitutions by executing simplify(map(expand, %)); immediately after executing the previous code.) To compute the numerical value, we need only execute evalf(%); immediately after the previous code.
By the way, we need not have that $\det B \neq 0$ in order to define $B!$. In fact, proceeding as above we find that the factorial of the (already diagonal) zero matrix is the identity matrix: $$0! = \pmatrix{\Gamma(1) &amp; 0 \\ 0 &amp; \Gamma(1)} = I .$$ Likewise using the formula for nondiagonalizable matrices referenced above together with a special identity gives that the factorial of the $2 \times 2$ Jordan block of eigenvalue $0$ is, somewhat amusingly,
$$\pmatrix{0 &amp; 1\\0 &amp; 0} ! = \pmatrix{1 &amp; -\gamma \\ 0 &amp; 1} ,$$ where $\gamma$ is the Euler-Mascheroni constant.
Travis' answer is very nice.

It would be good to mention that (almost) any matrix function can be made into a power-series expansion, which eventually involves the values of the function on the eigenvalues of the matrix multiplied by the eigenvectors.

In other words the matrix function is completely characterised by the values it takes on the eigenvalues of the matrix (even if a power-series expansion may be needed).

The above hold for matrices which are diagonalisable (i.e. the number of linearly independent eigenvectors is equal to the matrix dimension). There are ways to expand an arbitrary matrix into what is referred to as generalised eigenvectors, but this will not be pursued further here.

Furthermore, since any square, finite-dimensional, matrix satisfies its characteristic polynomial equation (if seen as a matrix function), aka Cayley-Hamilton theorem, the powers of $A^k$ for $k \ge n$ ($n$ is the dimension) can be expressed as a function of the powers of $A$ up to $n$. So eventually the matrix function power-series expansion collapses to polynomial expansion (for square matrices). Finally, this polynomial expansion, for a given function, can be found more easily by methods such as variation of parameters or polynomial modeling.