## Documentation Center |

Print large matrices

This functionality does not run in MATLAB.

`doprint(``object1, object2, …`)

`doprint` serves for displaying large matrices
on the screen. In fact, `doprint(object)` displays
any MuPAD^{®} object like `print(object)`. The only
difference is that large matrices contained in the object are printed,
too.

Matrices of type `matrix` or
of the more general type `Dom::Matrix(R)` with some
coefficient ring `R` are not willing to print themselves
on the screen if they are large.

An *m*×*n* matrix `A` is
printed like a formatted two-dimensional array only if *m* *n* ≤ *printMaxSize*,
where the default value of `printMaxSize` is 500.
(You can change the `printMaxSize` value to any other
integer value `m` by calling `A::dom::setPrintMaxSize(m)`).

For larger matrices, a warning is issued and some symbolic dummy object without the matrix entries is printed.

This serves to avoid output problems when printing is invoked accidentally (the output for large formatted arrays is very expensive concerning time and memory).

If you do insist on printing large matrices on the screen, the
function `doprint` can be used to create a sparse
table like output of the matrix.

`doprint` allows to print arbitrary MuPAD objects.
It behaves like `print` for
all objects apart from matrices contained in the object.

For small matrices, it switches off the formatted array like
output and replaces it by a sparse table like output. For large matrices,
it suppresses warnings such as `"This matrix is too large
for display. ..."` and prints matrices using the sparse table
like output.

`doprint` is sensitive to the environment variables `DIGITS`, `PRETTYPRINT`,
and `TEXTWIDTH`,
and to the output preferences `Pref::floatFormat`, `Pref::keepOrder`, and `Pref::trailingZeroes`.

Small matrices are printed like formatted arrays:

A := matrix(5, 5, [i $ i = 1..30], Diagonal)

Calling `doprint`, this matrix is printed in
a different way:

doprint(A)

We create a larger diagonal matrix of dimension 30 ×30:

A := matrix(30, 30, [i $ i = 1..30], Diagonal):

If we had not suppressed the output by the colon terminating the command above, the following warning would have been issued by the output system:

A

Warning: This matrix is too large for display. To see all nonzero entries of a matrix A, use 'A::dom::doprint(A)'. [(Dom::Matrix(Dom::ExpressionField()))::print]

Warning: This matrix is too large for display. If you want to see all nonzero entries of a matrix, say A, then call 'A::dom::doprint(A)'. [(Dom::Matrix(Dom::ExpressionField()))::print]

Warning: This matrix is too large for display. If you want to see all nonzero entries of a matrix, say A, then call 'A::dom::doprint(A)'. [(Dom::Matrix(Dom::ExpressionField()))::print]

Since the matrix is extremely sparse, it does make sense to
print the matrix. Calling `doprint`, we obtain a
print output of all non-zero elements:

doprint(A)

delete A:

We compute a numerical *QR* factorization
of a zero matrix of dimension 30×30.
Since the command is not terminated by a colon, the output system
tries to print the list with the factors *Q* and *R*.
Both matrices send a warning:

[Q, R] := numeric::factorQR(matrix(30, 30, [])): Q, R

Warning: This matrix is too large for display. To see all nonzero entries of a matrix A, use 'A::dom::doprint(A)'. [(Dom::Matrix(Dom::ExpressionField()))::print]

Warning: This matrix is too large for display. To see all nonzero entries of a matrix A, use 'A::dom::doprint(A)'. [(Dom::Matrix(Dom::ExpressionField()))::print]

Warning: This matrix is too large for display. If you want to see all nonzero entries of a matrix, say A, then call 'A::dom::doprint(A)'. [(Dom::Matrix(Dom::ExpressionField()))::print]

We can enforce a sparse output via `doprint`.
The matrix factor *Q* is
the identity matrix, the matrix factor *R* is
zero:

doprint([Q, R])

delete Q, R:

`DIGITS`|`expose`|`expr2text`|`fprint`|`Pref::floatFormat`|`Pref::keepOrder`|`Pref::trailingZeroes`|`PRETTYPRINT`|`print`|`protocol`|`strprint`|`TEXTWIDTH`|`write`

Was this topic helpful?