Following the OP's comment regarding the lack of automation in the solutions proposed so far, I propose this:
- define a command called
\tallestmathstuff corresponding to the tallest mathematical "object" in your equation; some trial and error is necessary to make sure that it actually corresponds to the tallest thing.
- define a command called
\myunderbracket, which is build on \underbracket but inserts the \vphantom{\tallestmathstuff} before the first argument.
Then, using \myunderbracket instead of \underbracket prevents unnecessary clutter (i.e. \vphantom's) in the code.
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\begin{equation}
\newcommand\tallestmathstuff{%
%
% Put your tallest math object here
\begin{bmatrix}
1\\
2\\
3
\end{bmatrix}
%
}%
\def\myunderbracket#1_#2{%
\underbracket{\vphantom{\tallestmathstuff} #1}_{#2}
}
%
\myunderbracket{
\begin{bmatrix}
1 & 0 & 0 \\
0 & 1 & 0 \\
\end{bmatrix}
}_{A}
\myunderbracket{\tallestmathstuff}_{x}
=
\myunderbracket{
\begin{bmatrix}
1 \\
2
\end{bmatrix}
}_{b}
\end{equation}
\end{document}

EDIT: I have updated my solution so that \myunderbracket can be used exactly like \underbracket.