'Copy in values from a matrix into the given bounds.
Parameters
key : slice
The section of this matrix to replace.
value : Matrix
The matrix to copy values from.
Examples
>>> from sympy.matrices import Matrix, eye
>>> M = Matrix([[0, 1], [2, 3], [4, 5]])
>>> I = eye(3)
>>> I[:3, :2] = M
>>> I
Matrix([
[0, 1, 0],
[2, 3, 0],
[4, 5, 1]])
>>> I[0, 1] = M
>>> I
Matrix([
[0, 0, 1],
[2, 2, 3],
[4, 4, 5]])
See Also
copyin_list'

def copyin_matrix(self, key, value):

    (rlo, rhi, clo, chi) = self.key2bounds(key)
    shape = value.shape
    (dr, dc) = ((rhi - rlo), (chi - clo))
    if (shape != (dr, dc)):
        raise ShapeError(filldedent("The    Matrix    `value`    doesn't    have    the    same    dimensions    as    the    in    sub-Matrix    given    by    `key`."))
    for i in range(value.rows):
        for j in range(value.cols):
            self[((i + rlo), (j + clo))] = value[(i, j)]
