doprint

Print large matrices

Use only in the MuPAD Notebook Interface.

This functionality does not run in MATLAB.

Syntax

doprint(object1, object2, …)

Description

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 mnprintMaxSize, 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.

    Note:   With doprint, only non-zero entries of large matrices are printed!

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.

See Example 1 and Example 2.

Environment Interactions

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

Examples

Example 1

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:

Example 2

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] 
 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] 
 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:

Parameters

object1, object2, …

Any MuPAD objects

Return Values

doprint returns the void object null() of type DOM_NULL.

Overloaded By

Was this topic helpful?