Accelerating the pace of engineering and science

# Documentation Center

• Trial Software

### Contents

Add patterns for the Z transform

### Use only in the MuPAD Notebook Interface.

This functionality does not run in MATLAB.

## Syntax

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

## Description

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

The ztrans function uses a set of patterns for computing Z transforms. You can extend the set by adding your own patterns. To add a new pattern to the pattern matcher, use ztrans::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 ztrans::addpattern can differ from the names that you use when calling ztrans. 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 ztrans::addpattern changes the expressions returned by future calls to ztrans.

## Examples

### Example 1

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

`ztrans(foo(k), k, z)`

`ztrans::addpattern(foo(k), k, z, bar(z)):`

Now ztrans returns the Z transform of foo:

`ztrans(foo(k), k, z)`

After you add a new transform pattern, MuPAD can use that pattern indirectly:

`ztrans(foo(k + 3), k, z)`

### Example 2

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

`ztrans::addpattern(x, x, y, y/(y^2-2*y+1)):`

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

`ztrans(s, s, t)`

### Example 3

Use assumptions when adding this pattern for the Z transform:

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

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

`ztrans(FOO(x*k), k, z) assuming x >= 1`

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

`ztrans(FOO(x*k), k, z)`

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

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

If either the conditions are not satisfied or substituting the values into the result gives an error, ztrans 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:

`ztrans(FOO(s/2),s,t)`

## Parameters

 pat Arithmetical expression in the variable k representing the pattern to match k Identifier or indexed identifier used as a variable in the pattern z Identifier or indexed identifier used as a variable in the result res Arithmetical expression in the variable k representing the pattern for the result of the transformation vars 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 k or z. You can restrict them by conditions given in the optional parameter conds. conds List of conditions on the pattern variables

## Return Values

Object of type DOM_NULL