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.


Add patterns for the inverse Z transform

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.


iztrans::addpattern(pat, z, k, res, <vars, <conds>>)


iztrans::addpattern(pat, z, k, res) teaches iztrans to return iztrans(pat, z, k) = res.

The iztrans function uses a set of patterns for computing inverse Z transforms. You can extend the set by adding your own patterns. To add a new pattern to the pattern matcher, use iztrans::addpattern. MuPAD® does not save custom patterns permanently. The new patterns are available in the current MuPAD session only.

Variable names that you use when calling iztrans::addpattern can differ from the names that you use when calling iztrans. See Example 2.

You can include a list of free parameters and a list of conditions on these parameters. These conditions and the result are protected from premature evaluation. This means that you can use not   iszero(a^2 - b) instead of hold( _not @ iszero )(a^2 - b).

The following conditions treat assumptions on identifiers differently:

  • a^2 - b <> 0 takes into account assumptions on identifiers.

  • not   iszero(a^2 - b) disregards assumptions on identifiers.

See Example 3.

Environment Interactions

Calling iztrans::addpattern changes the expressions returned by future calls to iztrans.


Example 1

Compute the inverse Z transform of the function bar. By default, MuPAD does not have a pattern for this function:

iztrans(bar(z), z, k)

Add a pattern for the inverse Z transform of bar using iztrans::addpattern:

iztrans::addpattern(bar(z), z, k, foo(k)):

Now iztrans returns the inverse Z transform of bar:

iztrans(bar(z), z, k)

Example 2

Define the inverse Z transform of bar(y) using the variables x and y as parameters:

iztrans::addpattern(bar(y), y, x, foo(x))

The iztrans function recognizes the added pattern even if you use other variables as parameters:

iztrans(bar(z), z, k)

Example 3

Use assumptions when adding this pattern for the inverse Z transform:

iztrans::addpattern(BAR(x*z), z, k, FOO(k/(x - 1/2))*sin(x),
                                      [x], [abs(x) < 1]):
iztrans(BAR(x*z), z, k) assuming -1 < x < 1

If |x| ≥ 1, you cannot apply this pattern:

iztrans(BAR(x*z), z, k) assuming x >= 1

If MuPAD cannot determine whether the conditions are satisfied, it returns a piecewise object:

iztrans(BAR(x*z), z, k)

Note that the resulting expression defining the inverse Z transform of BAR(x*z) implicitly assumes that the value of x is not 1/2. A strict definition of the pattern is:

ztrans::addpattern(BAR(x*z), z, k, FOO(k/(x - 1/2))*sin(x),
                     [x], [abs(x) < 1, x <> 1/2]):

If either the conditions are not satisfied or substituting the values into the result gives an error, iztrans ignores the pattern. For this particular pattern, you can omit specifying the assumption x <> 1/2. If x = 1/2, MuPAD throws an internal “Division by zero.” error and ignores the pattern:

iztrans(BAR(z/2), z, k)



Arithmetical expression in the variable z representing the pattern to match


Identifier used as a variable in the pattern


Identifier used as a variable in the result


Arithmetical expression in the variable k representing the pattern for the result of the transformation


List of identifiers or indexed identifiers used as “pattern variables” (placeholders in pat and res). You can use pattern variables as placeholders for almost arbitrary MuPAD expressions not containing z or k. You can restrict them by conditions given in the optional parameter conds.


List of conditions on the pattern variables

Return Values

Object of type DOM_NULL

Was this topic helpful?