code: def block_diag(mats, format=None, dtype=None):
      """
      Build a block diagonal sparse matrix from provided matrices.
  
      Parameters
      ----------
      mats : sequence of matrices
          Input matrices.
      format : str, optional
          The sparse format of the result (e.g. "csr").  If not given, the matrix
          is returned in "coo" format.
      dtype : dtype specifier, optional
          The data-type of the output matrix.  If not given, the dtype is
          determined from that of `blocks`.
  
      Returns
      -------
      res : sparse matrix
  
      Notes
      -----
  
      .. versionadded:: 0.11.0
  
      See Also
      --------
      bmat, diags
  
      Examples
      --------
      >>> from scipy.sparse import coo_matrix, block_diag
      >>> A = coo_matrix([[1, 2], [3, 4]])
      >>> B = coo_matrix([[5], [6]])
      >>> C = coo_matrix([[7]])
      >>> block_diag((A, B, C)).toarray()
      array([[1, 2, 0, 0],
             [3, 4, 0, 0],
             [0, 0, 5, 0],
             [0, 0, 6, 0],
             [0, 0, 0, 7]])
  
      """
      nmat = len(mats)
      rows = []
      for ia, a in enumerate(mats):
          row = [None] * nmat
          if issparse(a):
              row[ia] = a
          else:
              row[ia] = coo_matrix(a)
          rows.append(row)
      return bmat(rows, format=format, dtype=dtype)
  
imports: from __future__ import division, print_function, absolute_import
  import numpy
  from scipy._lib._numpy_compat import get_randint
  from scipy._lib.six import xrange
  from .sputils import upcast, get_index_dtype, isscalarlike
  from .csr import csr_matrix
  from .csc import csc_matrix
  from .bsr import bsr_matrix
  from .coo import coo_matrix
  from .dia import dia_matrix
  from .base import issparse
label_desc: Use image node_id 11 for calling a global function with example usage: block_diag(mats, format, dtype) and returns: bmat