Apply specified expression to input

User-Defined Functions

The Fcn block applies the specified mathematical expression to its input. The expression can include one or more of these components:

`u`

— The input to the block. If`u`

is a vector,`u(i)`

represents the`i`

th element of the vector;`u(1)`

or`u`

alone represents the first element.Numeric constants.

Arithmetic operators (+ -

`*`

/ ^).Relational operators (

`== != > < >= <=`

) — The expression returns 1 if the relation is true; otherwise, it returns 0.Logical operators (&& || !) — The expression returns 1 if the relation is true; otherwise, it returns 0.

Parentheses.

Mathematical functions —

`abs`

,`acos`

,`asin`

,`atan`

,`atan2`

,`ceil`

,`cos`

,`cosh`

,`exp`

,`floor`

,`hypot`

,`log`

,`log10`

,`power`

,`rem`

,`sgn`

(equivalent to`sign`

in MATLAB^{®}),`sin`

,`sinh`

,`sqrt`

,`tan`

, and`tanh`

.### Note

The Fcn block does not support

`round`

and`fix`

. Use the Rounding Function block to apply these rounding modes.Workspace variables — Variable names that are not recognized in the preceding list of items are passed to MATLAB for evaluation. Matrix or vector elements must be specifically referenced (e.g.,

`A(1,1)`

instead of`A`

for the first element in the matrix).

The Fcn block observes the following rules of operator precedence:

`( )`

`^`

`+ -`

(unary)`!`

`* /`

`+ -`

`> < <= >=`

`== !=`

`&&`

`||`

The expression differs from a MATLAB expression in that the expression cannot perform matrix computations. Also, this block does not support the colon operator (:).

Block input can be a scalar or vector. The output is always
a scalar. For vector output, consider using the Math Function block. If a block input
is a vector and the function operates on input elements individually
(for example, the `sin`

function), the block operates
on only the first vector element.

The Fcn block has the following limitations:

You cannot tune the expression during simulation in Normal or Accelerator mode (see How Acceleration Modes Work), or in generated code. To implement tunable expressions, tune the expression outside the Fcn block. For example, use the Relational Operator block to evaluate the expression outside.

The Fcn block does not support custom storage classes. See Custom Storage Classes (Embedded Coder) in the Embedded Coder

^{®}documentation.

The Fcn block accepts and outputs signals of type `single`

or `double`

.

For more information, see Data Types Supported by Simulink in the Simulink^{®} documentation.

**Expression**Specify the mathematical expression to apply to the input. Expression components are listed above. The expression must be mathematically well-formed (uses matched parentheses, proper number of function arguments, and so on). The expression has restrictions on tunability (see Limitations)

**Sample time**### Note

This parameter is not visible in the block dialog box unless it is explicitly set to a value other than

`-1`

. To learn more, see Blocks for Which Sample Time Is Not Recommended.

The following example models show how to use the Fcn block:

`sldemo_absbrake`

`sldemo_enginewc`

(Throttle & Manifold/Throttle subsystem)

Data Types | Double | Single |

Sample Time | Inherited from driving block |

Direct Feedthrough | Yes |

Multidimensional Signals | No |

Variable-Size Signals | No |

Zero-Crossing Detection | No |

Code Generation | Yes |

Was this topic helpful?