code: def matmul(a, b, transa=False, transb=False):
      """Computes the matrix multiplication of two arrays.
  
      Args:
          a (:class:`~chainer.Variable` or :ref:`ndarray`):
              The left operand of the matrix multiplication.
              If ``a`` and ``b`` are both 1-D arrays, ``matmul`` returns a dot
              product of vector `a` and vector `b`. If 2-D arrays, ``matmul``
              returns matrix product of ``a`` and ``b``. If either's dimension is
              larger than 2, they are treated as a stack of matrices residing in
              the last two indexes. ``matmul`` returns a stack of each two
              arrays. In this case, ``a`` and ``b`` are broadcasted along axes
              except the last two.
          b (:class:`~chainer.Variable` or :ref:`ndarray`):
              The right operand of the matrix multiplication.
              Its array is treated as a matrix in the same way as ``a``'s array.
          transa (bool): If ``True``, each matrices in ``a`` will be transposed.
              If ``a.ndim == 1``, do nothing.
          transb (bool): If ``True``, each matrices in ``b`` will be transposed.
              If ``b.ndim == 1``, do nothing.
  
      Returns:
          ~chainer.Variable: The result of the matrix multiplication.
  
      .. admonition:: Example
  
          >>> a = np.array([[1, 0], [0, 1]], np.float32)
          >>> b = np.array([[4, 1], [2, 2]], np.float32)
          >>> F.matmul(a, b).array
          array([[4., 1.],
                 [2., 2.]], dtype=float32)
  
      """
      return MatMul(transa=transa, transb=transb).apply((a, b))[0]
  
imports: import warnings
  import numpy
  from chainer import backend
  from chainer.backends import cuda
  from chainer import function_node
  import chainer.functions
  from chainer import utils
  from chainer.utils import type_check
  import chainerx
label_desc: Use image node_id 7 for calling a global function with example usage: matmul(a, b, transa, transb) and returns: MatMul