#### 4.1.1 Empty Matrices ¶

A matrix may have one or both dimensions zero, and operations on empty matrices are handled as described by Carl de Boor in `"An Empty Exercise"`, SIGNUM, Vol. 25, pp. 2–6, 1990 and C. N. Nett and W. M. Haddad, in `"A System-Theoretic Appropriate Realization of the Empty Matrix Concept"`, IEEE Transactions on Automatic Control, Vol. 38, No. 5, May 1993. Briefly, given a scalar s, an m by n matrix `M(mxn)`, and an m by n empty matrix `[](mxn)` (with either one or both dimensions equal to zero), the following are true:

    s * [](mxn) = [](mxn) * s = [](mxn)

        [](mxn) + [](mxn) = [](mxn)

        [](0xm) *  M(mxn) = [](0xn)

         M(mxn) * [](nx0) = [](mx0)

        [](mx0) * [](0xn) =  0(mxn)

By default, dimensions of the empty matrix are printed along with the empty matrix symbol, ‘`[]`’. The built-in variable `print_empty_dimensions` controls this behavior.

`val =` print_empty_dimensions `()` ¶
`old_val =` print_empty_dimensions `(new_val)` ¶
`old_val =` print_empty_dimensions `(new_val, "local")` ¶

  Query or set the internal variable that controls whether the dimensions of empty matrices are printed along with the empty matrix symbol, ‘`[]`’.

  For example, the expression

      zeros (3, 0)

  will print

      ans = [](3x0)

  When called from inside a function with the `"local"` option, the variable is changed locally for the function and any subroutines it calls. The original variable value is restored when exiting the function.

  See also: format.

Empty matrices may also be used in assignment statements as a convenient way to delete rows or columns of matrices. See Assignment Expressions.

When Octave parses a matrix expression, it examines the elements of the list to determine whether they are all constants. If they are, it replaces the list with a single matrix constant.