This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

Enforce Evaluation

MuPAD® notebooks are not recommended. Use MATLAB® live scripts instead.

MATLAB live scripts support most MuPAD functionality, though there are some differences. For more information, see Convert MuPAD Notebooks to MATLAB Live Scripts.

MuPAD® automatically evaluates results returned by most of the system functions. However, a few functions can return unevaluated results. For example, the text2expr function does not evaluate the returned results:

text2expr("2 + 2")

The last function and its shortcut %, which return the previously computed object, also do not evaluate the results:


For such cases, MuPAD provides the eval function. This function enables you to enforce evaluation of an expression. For example, enforce evaluation of the previously returned expression:


Another example of the function that does not automatically evaluate returned results is the subs function. This function can simplify expressions that contain only purely arithmetical operations:

subs(x^2 + 1, x = 0)

However, the subs function does not evaluate expressions. For example, substitute the variable x with the value 0 in the following expression that contains the sine function:

subs(sin(x^2) + 1, x = 0)

You can use the eval function to enforce evaluation of the results returned by subs. In this case, MuPAD evaluates the whole expression:


Alternatively, the subs function provides a more efficient method to evaluate its results. The EvalChanges option enforces evaluation of the modified parts of the expression, leaving the unchanged parts out of the evaluation process:

subs(sin(x^2) + 1, x = 0, EvalChanges)

Most efficiently, evaluate an expression at a particular value of a variable by using the evalAt function. See Evaluation at a Point.

Also, MuPAD does not evaluate arrays, tables, and polynomials. For example, the system does not evaluate the identifiers a and b of the following array A:

A := array(1..2, [a, b]):
b := 2*a: a := 1: A

When you access the entries of the array A by using the op function, the system does not evaluate the entries of A. When you use the indexed access, the system evaluates the entries of arrays, matrices and tables:

op(A, 1), op(A, 2);
A[1], A[2]

To evaluate all entries of an array, a table, or a polynomial apply the eval function to that array, table, or polynomial. Use the map function to apply eval to an array or a table:

map(A, eval)

For polynomials, use the mapcoeffs function:

p := poly(c*x, [x]): c := 10:
mapcoeffs(p, eval)

delete a, b, c:
Was this topic helpful?