class_docstr: A matrix group of linear (not affine) transformations with matrices having a specific dtype.
code: def __init__(self, matrix, coords, dtype=None):
      dtype = dtype or self.dtype
      if not isinstance(coords, CoordinateSystem):
          coords = CoordinateSystem(coords, "space", coord_dtype=dtype)
      else:
          coords = CoordinateSystem(coords.coord_names, "space", dtype)
      Linear.__init__(self, coords, coords, matrix.astype(dtype))
      if not self.validate():
          raise ValueError(
              f"this matrix is not an element of {self.__class__!r}"
          )
      if not self.coords.coord_dtype == self.dtype:
          raise ValueError(
              "the input coordinates builtin "
              "dtype should agree with self.dtype"
          )
  
imports: import numpy
  from nipy.core.api import AffineTransform, CoordinateSystem
  from nipy.core.reference.coordinate_map import compose
  from nipy.core.reference.coordinate_map import product
label_desc: Use image node_id 1 to create a new MatrixGroup object from inherited base classes: Linear with example: obj = MatrixGroup(matrix, coords, dtype)