## Modelica.Blocks.Math

Library of Real mathematical functions as input/output blocks

### Information

This package contains basic mathematical operations, such as summation and multiplication, and basic mathematical functions, such as sqrt and sin, as input/output blocks. All blocks of this library can be either connected with continuous blocks or with sampled-data blocks.

Extends from Modelica.Icons.Package (Icon for standard packages).

### Package Content

Name Description
UnitConversions Conversion blocks to convert between SI and non-SI unit signals
InverseBlockConstraints Construct inverse model by requiring that two inputs and two outputs are identical
Gain Output the product of a gain value with the input signal
MatrixGain Output the product of a gain matrix with the input signal vector
MultiSum Sum of Reals: y = k[1]*u[1] + k[2]*u[2] + ... + k[n]*u[n]
MultiProduct Product of Reals: y = u[1]*u[2]* ... *u[n]
MultiSwitch Set Real expression that is associated with the first active input signal
Sum Output the sum of the elements of the input vector
Feedback Output difference between commanded and feedback input
Add Output the sum of the two inputs
Add3 Output the sum of the three inputs
Product Output product of the two inputs
Division Output first input divided by second input
Abs Output the absolute value of the input
Sign Output the sign of the input
Sqrt Output the square root of the input (input >= 0 required)
Sin Output the sine of the input
Cos Output the cosine of the input
Tan Output the tangent of the input
Asin Output the arc sine of the input
Acos Output the arc cosine of the input
Atan Output the arc tangent of the input
Atan2 Output atan(u1/u2) of the inputs u1 and u2
Sinh Output the hyperbolic sine of the input
Cosh Output the hyperbolic cosine of the input
Tanh Output the hyperbolic tangent of the input
Exp Output the exponential (base e) of the input
Power Output the power to a base of the input
Log Output the logarithm (default base e) of the input (input > 0 required)
Log10 Output the base 10 logarithm of the input (input > 0 required)
WrapAngle Wrap angle to interval ]-pi,pi] or [0,2*pi[
RealToInteger Convert Real to Integer signal
IntegerToReal Convert Integer to Real signals
BooleanToReal Convert Boolean to Real signal
BooleanToInteger Convert Boolean to Integer signal
RealToBoolean Convert Real to Boolean signal
IntegerToBoolean Convert Integer to Boolean signal
RectangularToPolar Convert rectangular coordinates to polar coordinates
PolarToRectangular Convert polar coordinates to rectangular coordinates
Mean Calculate mean over period 1/f
RectifiedMean Calculate rectified mean over period 1/f
ContinuousMean Calculates the empirical expectation (mean) value of its input signal
RootMeanSquare Calculate root mean square over period 1/f
Variance Calculates the empirical variance of its input signal
StandardDeviation Calculates the empirical standard deviation of its input signal
Harmonic Calculate harmonic over period 1/f
TotalHarmonicDistortion Output the total harmonic distortion (THD)
RealFFT Sampling and FFT of input u
Pythagoras Determine the hypotenuse or leg of a right triangle
Max Pass through the largest signal
Min Pass through the smallest signal
MinMax Output the minimum and the maximum element of the input vector
LinearDependency Output a linear combination of the two inputs
Edge Indicates rising edge of Boolean signal
BooleanChange Indicates Boolean signal changing
IntegerChange Indicates integer signal changing

## Modelica.Blocks.Math.InverseBlockConstraints

Construct inverse model by requiring that two inputs and two outputs are identical

### Information

Exchange input and output signals of a block, i.e., the previous block inputs become block outputs and the previous block outputs become block inputs. This block is used to construct inverse models. Its usage is demonstrated in example: Modelica.Blocks.Examples.InverseModel.

Note, if a block shall be inverted that has several input and output blocks, then this can be easily achieved by using a vector of InverseBlockConstraints instances:

```InverseBlockConstraint invert[3];  // Block to be inverted has 3 input signals
```

### Connectors

NameDescription
u1Input signal 1 (u1 = u2)
u2Input signal 2 (u1 = u2)
y1Output signal 1 (y1 = y2)
y2Output signal 2 (y1 = y2)

## Modelica.Blocks.Math.Gain

Output the product of a gain value with the input signal

### Information

This block computes output y as product of gain k with the input u:

```y = k * u;
```

### Parameters

NameDescription
kGain value multiplied with input signal [1]

### Connectors

NameDescription
uInput signal connector
yOutput signal connector

## Modelica.Blocks.Math.MatrixGain

Output the product of a gain matrix with the input signal vector

### Information

This blocks computes output vector y as product of the gain matrix K with the input signal vector u:

```y = K * u;
```

Example:

```parameter: K = [0.12 2; 3 1.5]

results in the following equations:

| y[1] |     | 0.12  2.00 |   | u[1] |
|      |  =  |            | * |      |
| y[2] |     | 3.00  1.50 |   | u[2] |
```

Extends from Interfaces.MIMO (Multiple Input Multiple Output continuous control block).

### Parameters

NameDescription
K[:, :]Gain matrix which is multiplied with the input
ninNumber of inputs
noutNumber of outputs

### Connectors

NameDescription
u[nin]Connector of Real input signals
y[nout]Connector of Real output signals

## Modelica.Blocks.Math.MultiSum

Sum of Reals: y = k[1]*u[1] + k[2]*u[2] + ... + k[n]*u[n]

### Information

This blocks computes the scalar Real output "y" as sum of the elements of the Real input signal vector u:

```y = k[1]*u[1] + k[2]*u[2] + ... k[N]*u[N];
```

The input connector is a vector of Real input signals. When a connection line is drawn, the dimension of the input vector is enlarged by one and the connection is automatically connected to this new free index (thanks to the connectorSizing annotation).

The usage is demonstrated, e.g., in example Modelica.Blocks.Examples.RealNetwork1.

If no connection to the input connector "u" is present, the output is set to zero: y=0.

Extends from Modelica.Blocks.Interfaces.PartialRealMISO (Partial block with a RealVectorInput and a RealOutput signal).

### Parameters

NameDescription
k[nu]Input gains
significantDigitsNumber of significant digits to be shown in dynamic diagram layer for y

NameDescription
u[nu]
y

## Modelica.Blocks.Math.MultiProduct

Product of Reals: y = u[1]*u[2]* ... *u[n]

### Information

This blocks computes the scalar Real output "y" as product of the elements of the Real input signal vector u:

```y = u[1]*u[2]* ... *u[N];
```

The input connector is a vector of Real input signals. When a connection line is drawn, the dimension of the input vector is enlarged by one and the connection is automatically connected to this new free index (thanks to the connectorSizing annotation).

The usage is demonstrated, e.g., in example Modelica.Blocks.Examples.RealNetwork1.

If no connection to the input connector "u" is present, the output is set to zero: y=0.

Extends from Modelica.Blocks.Interfaces.PartialRealMISO (Partial block with a RealVectorInput and a RealOutput signal).

### Parameters

NameDescription
significantDigitsNumber of significant digits to be shown in dynamic diagram layer for y

NameDescription
u[nu]
y

## Modelica.Blocks.Math.MultiSwitch

Set Real expression that is associated with the first active input signal

### Information

This block has a vector of Boolean input signals u[nu] and a vector of (time varying) Real expressions expr[nu]. The output signal y is set to expr[i], if i is the first element in the input vector u that is true. If all input signals are false, y is set to parameter "y_default".

```// Conceptual equation (not valid Modelica)
i = 'first element of u[:] that is true';
y = if i==0 then y_default else expr[i];
```

The input connector is a vector of Boolean input signals. When a connection line is drawn, the dimension of the input vector is enlarged by one and the connection is automatically connected to this new free index (thanks to the connectorSizing annotation).

The usage is demonstrated, e.g., in example Modelica.Blocks.Examples.RealNetwork1.

### Parameters

NameDescription
expr[nu]y = if u[i] then expr[i] else y_default (time varying)
y_defaultDefault value of output y if all u[i] = false
precisionNumber of significant digits to be shown in dynamic diagram layer for y

### Connectors

NameDescription
u[nu]Set y = expr[i], if u[i] = true
yOutput depending on expression

## Modelica.Blocks.Math.Sum

Output the sum of the elements of the input vector

### Information

This blocks computes output y as sum of the elements of the input signal vector u:

```y = u[1] + u[2] + ...;
```

Example:

```   parameter:   nin = 3;

results in the following equations:

y = u[1] + u[2] + u[3];
```

Extends from Interfaces.MISO (Multiple Input Single Output continuous control block).

### Parameters

NameDescription
ninNumber of inputs
k[nin]Optional: sum coefficients

### Connectors

NameDescription
u[nin]Connector of Real input signals
yConnector of Real output signal

## Modelica.Blocks.Math.Feedback

Output difference between commanded and feedback input

### Information

This blocks computes output y as difference of the commanded input u1 and the feedback input u2:

```y = u1 - u2;
```

Example:

```   parameter:   n = 2

results in the following equations:

y = u1 - u2
```

### Connectors

NameDescription
u1Commanded input
u2Feedback input
y

Output the sum of the two inputs

### Information

This blocks computes output y as sum of the two input signals u1 and u2:

```y = k1*u1 + k2*u2;
```

Example:

```   parameter:   k1= +2, k2= -3

results in the following equations:

y = 2 * u1 - 3 * u2
```

Extends from Interfaces.SI2SO (2 Single Input / 1 Single Output continuous control block).

### Parameters

NameDescription
k1Gain of input signal 1
k2Gain of input signal 2

### Connectors

NameDescription
u1Connector of Real input signal 1
u2Connector of Real input signal 2
yConnector of Real output signal

Output the sum of the three inputs

### Information

This blocks computes output y as sum of the three input signals u1, u2 and u3:

```y = k1*u1 + k2*u2 + k3*u3;
```

Example:

```   parameter:   k1= +2, k2= -3, k3=1;

results in the following equations:

y = 2 * u1 - 3 * u2 + u3;
```

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

### Parameters

NameDescription
k1Gain of input signal 1
k2Gain of input signal 2
k3Gain of input signal 3

### Connectors

NameDescription
u1Connector of Real input signal 1
u2Connector of Real input signal 2
u3Connector of Real input signal 3
yConnector of Real output signal

## Modelica.Blocks.Math.Product

Output product of the two inputs

### Information

This blocks computes the output y as product of the two inputs u1 and u2:

```y = u1 * u2;
```

Extends from Interfaces.SI2SO (2 Single Input / 1 Single Output continuous control block).

### Connectors

NameDescription
u1Connector of Real input signal 1
u2Connector of Real input signal 2
yConnector of Real output signal

## Modelica.Blocks.Math.Division

Output first input divided by second input

### Information

This block computes the output y by dividing the two inputs u1 and u2:

```y = u1 / u2;
```

Extends from Interfaces.SI2SO (2 Single Input / 1 Single Output continuous control block).

### Connectors

NameDescription
u1Connector of Real input signal 1
u2Connector of Real input signal 2
yConnector of Real output signal

## Modelica.Blocks.Math.Abs

Output the absolute value of the input

### Information

This blocks computes the output y as absolute value of the input u:

```y = abs( u );
```

The Boolean parameter generateEvent decides whether Events are generated at zero crossing (Modelica specification before 3) or not.

Extends from Interfaces.SISO (Single Input Single Output continuous control block).

### Parameters

NameDescription
generateEventChoose whether events shall be generated

### Connectors

NameDescription
uConnector of Real input signal
yConnector of Real output signal

## Modelica.Blocks.Math.Sign

Output the sign of the input

### Information

This blocks computes the output y as sign of the input u:

```     1  if u > 0
y =  0  if u == 0
-1  if u < 0
```

The Boolean parameter generateEvent decides whether Events are generated at zero crossing (Modelica specification before 3) or not.

Extends from Interfaces.SISO (Single Input Single Output continuous control block).

### Parameters

NameDescription
generateEventChoose whether events shall be generated

### Connectors

NameDescription
uConnector of Real input signal
yConnector of Real output signal

## Modelica.Blocks.Math.Sqrt

Output the square root of the input (input >= 0 required)

### Information

This blocks computes the output y as square root of the input u:

```y = sqrt( u );
```

The input shall be zero or positive. Otherwise an error occurs.

Extends from Interfaces.SISO (Single Input Single Output continuous control block).

### Connectors

NameDescription
uConnector of Real input signal
yConnector of Real output signal

## Modelica.Blocks.Math.Sin

Output the sine of the input

### Information

This blocks computes the output y as sine of the input u:

```y = sin( u );
```

Extends from Interfaces.SISO (Single Input Single Output continuous control block).

### Connectors

NameDescription
yConnector of Real output signal

## Modelica.Blocks.Math.Cos

Output the cosine of the input

### Information

This blocks computes the output y as cos of the input u:

```y = cos( u );
```

Extends from Interfaces.SISO (Single Input Single Output continuous control block).

### Connectors

NameDescription
yConnector of Real output signal

## Modelica.Blocks.Math.Tan

Output the tangent of the input

### Information

This blocks computes the output y as tan of the input u:

```y = tan( u );
```

Extends from Interfaces.SISO (Single Input Single Output continuous control block).

### Connectors

NameDescription
yConnector of Real output signal

## Modelica.Blocks.Math.Asin

Output the arc sine of the input

### Information

This blocks computes the output y as the sine-inverse of the input u:

```y = asin( u );
```

The absolute value of the input u need to be less or equal to one (abs( u ) <= 1). Otherwise an error occurs.

Extends from Interfaces.SISO (Single Input Single Output continuous control block).

### Connectors

NameDescription
uConnector of Real input signal

## Modelica.Blocks.Math.Acos

Output the arc cosine of the input

### Information

This blocks computes the output y as the cosine-inverse of the input u:

```y = acos( u );
```

The absolute value of the input u need to be less or equal to one (abs( u ) <= 1). Otherwise an error occurs.

Extends from Interfaces.SISO (Single Input Single Output continuous control block).

### Connectors

NameDescription
uConnector of Real input signal

## Modelica.Blocks.Math.Atan

Output the arc tangent of the input

### Information

This blocks computes the output y as the tangent-inverse of the input u:

```y= atan( u );
```

Extends from Interfaces.SISO (Single Input Single Output continuous control block).

### Connectors

NameDescription
uConnector of Real input signal

## Modelica.Blocks.Math.Atan2

Output atan(u1/u2) of the inputs u1 and u2

### Information

This blocks computes the output y as the tangent-inverse of the input u1 divided by input u2:

```y = atan2( u1, u2 );
```

u1 and u2 shall not be zero at the same time instant. Atan2 uses the sign of u1 and u2 in order to construct the solution in the range -180 deg ≤ y ≤ 180 deg, whereas block Atan gives a solution in the range -90 deg ≤ y ≤ 90 deg.

Extends from Interfaces.SI2SO (2 Single Input / 1 Single Output continuous control block).

### Connectors

NameDescription
u1Connector of Real input signal 1
u2Connector of Real input signal 2

## Modelica.Blocks.Math.Sinh

Output the hyperbolic sine of the input

### Information

This blocks computes the output y as the hyperbolic sine of the input u:

```y = sinh( u );
```

Extends from Interfaces.SISO (Single Input Single Output continuous control block).

### Connectors

NameDescription
uConnector of Real input signal
yConnector of Real output signal

## Modelica.Blocks.Math.Cosh

Output the hyperbolic cosine of the input

### Information

This blocks computes the output y as the hyperbolic cosine of the input u:

```y = cosh( u );
```

Extends from Interfaces.SISO (Single Input Single Output continuous control block).

### Connectors

NameDescription
uConnector of Real input signal
yConnector of Real output signal

## Modelica.Blocks.Math.Tanh

Output the hyperbolic tangent of the input

### Information

This blocks computes the output y as the hyperbolic tangent of the input u:

```y = tanh( u );
```

Extends from Interfaces.SISO (Single Input Single Output continuous control block).

### Connectors

NameDescription
uConnector of Real input signal
yConnector of Real output signal

## Modelica.Blocks.Math.Exp

Output the exponential (base e) of the input

### Information

This blocks computes the output y as the exponential (of base e) of the input u:

```y = exp( u );
```

Extends from Interfaces.SISO (Single Input Single Output continuous control block).

### Connectors

NameDescription
uConnector of Real input signal
yConnector of Real output signal

## Modelica.Blocks.Math.Power

Output the power to a base of the input

### Information

This blocks computes the output y as the power to the parameter base of the input u. If the boolean parameter useExp is true, the output is determined by:

```y = exp ( u * log (base) )
```

otherwise:

```y = base ^ u;
```

Extends from Interfaces.SISO (Single Input Single Output continuous control block).

### Parameters

NameDescription
baseBase of power
useExpUse exp function in implementation

### Connectors

NameDescription
uConnector of Real input signal
yConnector of Real output signal

## Modelica.Blocks.Math.Log

Output the logarithm (default base e) of the input (input > 0 required)

### Information

This blocks computes the output y as the logarithm to the parameter base of the input u:

```y = log( u ) / log( base );
```

An error occurs if the input u is zero or negative.

Extends from Interfaces.SISO (Single Input Single Output continuous control block).

### Parameters

NameDescription
baseBase of logarithm

### Connectors

NameDescription
uConnector of Real input signal
yConnector of Real output signal

## Modelica.Blocks.Math.Log10

Output the base 10 logarithm of the input (input > 0 required)

### Information

This blocks computes the output y as the base 10 logarithm of the input u:

```y = log10( u );
```

An error occurs if the input u is zero or negative.

Extends from Interfaces.SISO (Single Input Single Output continuous control block).

### Connectors

NameDescription
uConnector of Real input signal
yConnector of Real output signal

## Modelica.Blocks.Math.WrapAngle

Wrap angle to interval ]-pi,pi] or [0,2*pi[

### Information

This blocks wraps the input angle into the interval ]-pi,pi], if `positiveRange == false`. Otherwise the input angle `u` is wrapped to the interval [0,2*pi[.

Extends from Interfaces.SISO (Single Input Single Output continuous control block).

### Parameters

NameDescription
positiveRangeUse only positive output range, if true

## Modelica.Blocks.Math.RealToInteger

Convert Real to Integer signal

### Information

This block computes the output y as nearest integer value of the input u:

```y = integer( floor( u + 0.5 ) )  for  u > 0;
y = integer( ceil ( u - 0.5 ) )  for  u < 0;
```

Extends from Modelica.Blocks.Icons.IntegerBlock (Basic graphical layout of Integer block).

### Connectors

NameDescription
uConnector of Real input signal
yConnector of Integer output signal

## Modelica.Blocks.Math.IntegerToReal

Convert Integer to Real signals

### Information

This block computes the output y as Real equivalent of the Integer input u:

```y = u;
```

where u is of Integer and y of Real type.

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

### Connectors

NameDescription
uConnector of Integer input signal
yConnector of Real output signal

## Modelica.Blocks.Math.BooleanToReal

Convert Boolean to Real signal

### Information

This block computes the output y as Real equivalent of the Boolean input u:

```y = if u then realTrue else realFalse;
```

where u is of Boolean and y of Real type, and realTrue and realFalse are parameters.

Extends from Interfaces.partialBooleanSI (Partial block with 1 input Boolean signal).

### Parameters

NameDescription
realTrueOutput signal for true Boolean input
realFalseOutput signal for false Boolean input

### Connectors

NameDescription
uConnector of Boolean input signal
yConnector of Real output signal

## Modelica.Blocks.Math.BooleanToInteger

Convert Boolean to Integer signal

### Information

This block computes the output y as Integer equivalent of the Boolean input u:

```y = if u then integerTrue else integerFalse;
```

where u is of Boolean and y of Integer type, and integerTrue and integerFalse are parameters.

Extends from Interfaces.partialBooleanSI (Partial block with 1 input Boolean signal).

### Parameters

NameDescription
integerTrueOutput signal for true Boolean input
integerFalseOutput signal for false Boolean input

### Connectors

NameDescription
uConnector of Boolean input signal
yConnector of Integer output signal

## Modelica.Blocks.Math.RealToBoolean

Convert Real to Boolean signal

### Information

This block computes the Boolean output y from the Real input u by the equation:

```y = u ≥ threshold;
```

where threshold is a parameter.

Extends from Interfaces.partialBooleanSO (Partial block with 1 output Boolean signal).

### Parameters

NameDescription
thresholdOutput signal y is true, if input u >= threshold

### Connectors

NameDescription
uConnector of Real input signal
yConnector of Boolean output signal

## Modelica.Blocks.Math.IntegerToBoolean

Convert Integer to Boolean signal

### Information

This block computes the Boolean output y from the Integer input u by the equation:

```y = u ≥ threshold;
```

where threshold is a parameter.

Extends from Interfaces.partialBooleanSO (Partial block with 1 output Boolean signal).

### Parameters

NameDescription
thresholdOutput signal y is true, if input u >= threshold

### Connectors

NameDescription
uConnector of Integer input signal
yConnector of Boolean output signal

## Modelica.Blocks.Math.RectangularToPolar

Convert rectangular coordinates to polar coordinates

### Information

The input values of this block are the rectangular components `u_re` and `u_im` of a phasor in two dimensions. This block calculates the length `y_abs` and the angle `y_arg` of the polar representation of this phasor.

```y_abs = abs(u_re + j*u_im) = sqrt( u_re2 + u_im2 )
y_arg = arg(u_re + j*u_im) = atan2(u_im, u_re)
```

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

### Connectors

NameDescription
u_reReal part of rectangular representation
u_imImaginary part of rectangular representation
y_absLength of polar representation

## Modelica.Blocks.Math.PolarToRectangular

Convert polar coordinates to rectangular coordinates

### Information

The input values of this block are the polar components `uabs` and `uarg` of a phasor. This block calculates the components `y_re` and `y_im` of the rectangular representation of this phasor.

```y_re = u_abs * cos( u_arg )
y_im = u_abs * sin( u_arg )
```

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

### Connectors

NameDescription
u_absLength of polar representation
y_reReal part of rectangular representation
y_imImaginary part of rectangular representation

## Modelica.Blocks.Math.Mean

Calculate mean over period 1/f

### Information

This block calculates the mean of the input signal u over the given period 1/f:

```1 T
- ∫ u(t) dt
T 0
```

Note: The output is updated after each period defined by 1/f.

If parameter yGreaterOrEqualZero in the Advanced tab is true (default = false), then the modeller provides the information that the mean of the input signal is guaranteed to be ≥ 0 for the exact solution. However, due to inaccuracies in the numerical integration scheme, the output might be slightly negative. If this parameter is set to true, then the output is explicitly set to 0.0, if the mean value results in a negative value.

Extends from Modelica.Blocks.Interfaces.SISO (Single Input Single Output continuous control block).

### Parameters

NameDescription
fBase frequency [Hz]
x0Start value of integrator state
yGreaterOrEqualZero= true, if output y is guaranteed to be >= 0 for the exact solution

### Connectors

NameDescription
uConnector of Real input signal
yConnector of Real output signal

## Modelica.Blocks.Math.RectifiedMean

Calculate rectified mean over period 1/f

### Information

This block calculates the rectified mean of the input signal u over the given period 1/f, using the mean block.

Note: The output is updated after each period defined by 1/f.

Extends from Modelica.Blocks.Interfaces.SISO (Single Input Single Output continuous control block).

### Parameters

NameDescription
fBase frequency [Hz]
x0Start value of integrator state

### Connectors

NameDescription
uConnector of Real input signal
yConnector of Real output signal

## Modelica.Blocks.Math.ContinuousMean

Calculates the empirical expectation (mean) value of its input signal

### Information

This block continuously calculates the mean value of its input signal. It uses the function:

```     integral( u over time)
y = ------------------------
time - startTime
```

This can be used to determine the empirical expectation value of a random signal, such as generated by the Noise blocks.

The parameter t_eps is used to guard against division by zero (the mean value computation starts at <simulation start time> + t_eps and before that time instant y = u).

This block is demonstrated in the examples UniformNoiseProperties and NormalNoiseProperties.

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

### Parameters

NameDescription
t_epsMean value calculation starts at startTime + t_eps [s]

### Connectors

NameDescription
uNoisy input signal
yExpectation (mean) value of the input signal

## Modelica.Blocks.Math.RootMeanSquare

Calculate root mean square over period 1/f

### Information

This block calculates the root mean square of the input signal u over the given period 1/f, using the mean block.

Note: The output is updated after each period defined by 1/f.

Extends from Modelica.Blocks.Interfaces.SISO (Single Input Single Output continuous control block).

### Parameters

NameDescription
fBase frequency [Hz]
x0Start value of integrator state

### Connectors

NameDescription
uConnector of Real input signal
yConnector of Real output signal

## Modelica.Blocks.Math.Variance

Calculates the empirical variance of its input signal

### Information

This block calculates the empirical variance of its input signal. It is based on the formula (but implemented in a more reliable numerical way):

```y = mean(  (u - mean(u))^2  )
```

The parameter t_eps is used to guard against division by zero (the variance computation starts at <simulation start time> + t_eps and before that time instant y = 0).

The variance of a signal is also equal to its mean power.

This block is demonstrated in the examples UniformNoiseProperties and NormalNoiseProperties.

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

### Parameters

NameDescription
t_epsVariance calculation starts at startTime + t_eps [s]

### Connectors

NameDescription
uNoisy input signal
yVariance of the input signal

## Modelica.Blocks.Math.StandardDeviation

Calculates the empirical standard deviation of its input signal

### Information

This block calculates the standard deviation of its input signal. The standard deviation is the square root of the signal's variance:

```y = sqrt( variance(u) )
```

The Variance block is used to calculate variance(u).

The parameter t_eps is used to guard against division by zero (the computation of the standard deviation starts at <simulation start time> + t_eps and before that time instant y = 0).

This block is demonstrated in the examples UniformNoiseProperties and NormalNoiseProperties.

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

### Parameters

NameDescription
t_epsStandard deviation calculation starts at startTime + t_eps [s]

### Connectors

NameDescription
uNoisy input signal
yStandard deviation of the input signal

## Modelica.Blocks.Math.Harmonic

Calculate harmonic over period 1/f

### Information

This block calculates the root mean square and the phase angle of a single harmonic k of the input signal u over the given period 1/f, using the mean block.

Note: The output is updated after each period defined by 1/f.

Note:
The harmonic is defined by `√2 rms cos(k 2 π f t - arg)` if useConjugateComplex=false (default)
The harmonic is defined by `√2 rms cos(k 2 π f t + arg)` if useConjugateComplex=true

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

### Parameters

NameDescription
fBase frequency [Hz]
kOrder of harmonic
useConjugateComplexGives conjugate complex result if true
x0CosStart value of cos integrator state
x0SinStart value of sin integrator state

### Connectors

NameDescription
u
y_rmsRoot mean square of polar representation

## Modelica.Blocks.Math.TotalHarmonicDistortion

Output the total harmonic distortion (THD)

### Information

This block determines the total harmonic distortion (THD) over the given period `1/f`. Consider that the input `u` consists of harmonic RMS components `U1`, `U2`, `U3`, etc. The total RMS component is then determined by:

The calculation of the total harmonic distortion is based on the parameter `useFirstHarmonic`. The default value `useFirstHarmonic = true` represents the standard THD calculation used in electrical engineering. The non-default value `useFirstHarmonic = false` calculates the THD typically used for the assessment of audio signals.

If `useFirstHarmonic = true`, the total higher harmonic content (harmonic order numbers > 1) refers to the RMS value of the fundamental wave:

If `useFirstHarmonic = false`, the total higher harmonic content (harmonic order numbers > 1) refers to the total RMS:

In case of a zero input signal or within the first period of calculation, the boolean output signal `valid` becomes `false` to indicate that the calculation result is not valid. Valid calculations are indicated by `valid = true`.

Extends from Interfaces.SISO (Single Input Single Output continuous control block).

### Parameters

NameDescription
fBase frequency [Hz]
useFirstHarmonicTHD with respect to first harmonic, if true; otherwise with respect to total RMS

### Connectors

NameDescription
uConnector of Real input signal
yConnector of Real output signal
validTrue, if output y is valid

## Modelica.Blocks.Math.RealFFT

Sampling and FFT of input u

### Information

This block samples the input signal, calculates the Fast Fourier Transform by function Math.realFFT, and (when simulation terminates) writes the output to result file resultFileName by function Math.realFFTwriteToFile.

The number of sampling points as well as the samplePeriod is calculated from desired maximum frequency f_max and frequency resolution f_res.

#### Note

The user has to take care that enough points can be sampled before the simulation ends: startTime + (ns - 1)*samplePeriod <= stopTime.

The result file is written as mat, first column = frequency, second column = amplitudes, third column = phases. The frequency points are separated by rows with amplitude and phase = 0, so one can plot the result directly as frequency lines.

Extends from Modelica.Blocks.Interfaces.DiscreteBlock (Base class of discrete control blocks).

### Parameters

NameDescription
samplePeriodSample period of component [s]
startTimeFirst sample time instant [s]
f_maxMaximum frequency of interest [Hz]
f_resFrequency resolution [Hz]
resultFileNameResult file: f, abs, arg

NameDescription
u

## Modelica.Blocks.Math.Pythagoras

Determine the hypotenuse or leg of a right triangle

### Information

This block determines the hypotenuse `y = sqrt(u1^2 + u2^2)` if the boolean parameter `u1IsHyotenuse = false`. In this case the two inputs `u1` and `u2` are interpreted as the legs of a right triangle and the boolean output `valid` is always equal to `true`.

If `u1IsHyotenuse = true`, input `u1` is interpreted as hypotenuse and `u2` is one of the two legs of a right triangle. Then, the other of the two legs of the right triangle is the output, determined by `y = sqrt(u1^2 - u2^2)`, if `u1^2 - u2^2 ≥ 0`; in this case the boolean output `valid` is equal to `true`. In case of `u1^2 - u2^2 < 0`, the output `y = 0` and `valid` is set to `false`.

Extends from Interfaces.SI2SO (2 Single Input / 1 Single Output continuous control block).

### Parameters

NameDescription
u1IsHypotenuse= true, if u1 is the hypotenuse and y is one leg

### Connectors

NameDescription
u1Connector of Real input signal 1
u2Connector of Real input signal 2
yConnector of Real output signal
valid= true, if y is a valid result

## Modelica.Blocks.Math.Max

Pass through the largest signal

### Information

This block computes the output y as maximum of the two Real inputs u1 and u2:

```y = max ( u1 , u2 );
```

Extends from Interfaces.SI2SO (2 Single Input / 1 Single Output continuous control block).

### Connectors

NameDescription
u1Connector of Real input signal 1
u2Connector of Real input signal 2
yConnector of Real output signal

## Modelica.Blocks.Math.Min

Pass through the smallest signal

### Information

This block computes the output y as minimum of the two Real inputs u1 and u2:

```y = min ( u1 , u2 );
```

Extends from Interfaces.SI2SO (2 Single Input / 1 Single Output continuous control block).

### Connectors

NameDescription
u1Connector of Real input signal 1
u2Connector of Real input signal 2
yConnector of Real output signal

## Modelica.Blocks.Math.MinMax

Output the minimum and the maximum element of the input vector

### Information

Determines the minimum and maximum element of the input vector and provide both values as output.

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

NameDescription
u[nu]
yMax
yMin

## Modelica.Blocks.Math.LinearDependency

Output a linear combination of the two inputs

### Information

Determine the linear combination of the two inputs: `y = y0 + k1*u1 + k2*u2`

Extends from Modelica.Blocks.Interfaces.SI2SO (2 Single Input / 1 Single Output continuous control block).

NameDescription
y0Initial value
k1Gain of u1
k2Gain of u2

### Connectors

NameDescription
u1Connector of Real input signal 1
u2Connector of Real input signal 2
yConnector of Real output signal

## Modelica.Blocks.Math.Edge

Indicates rising edge of Boolean signal

### Information

This block sets the Boolean output y to true, when the Boolean input u shows a rising edge:

```y = edge( u );
```

Extends from Interfaces.BooleanSISO (Single Input Single Output control block with signals of type Boolean).

### Connectors

NameDescription
uConnector of Boolean input signal
yConnector of Boolean output signal

## Modelica.Blocks.Math.BooleanChange

Indicates Boolean signal changing

### Information

This block sets the Boolean output y to true, when the Boolean input u shows a rising or falling edge, i.e., when the signal changes:

```y = change( u );
```

Extends from Interfaces.BooleanSISO (Single Input Single Output control block with signals of type Boolean).

### Connectors

NameDescription
uConnector of Boolean input signal
yConnector of Boolean output signal

## Modelica.Blocks.Math.IntegerChange

Indicates integer signal changing

### Information

This block sets the Boolean output y to true, when the Integer input u changes:

```y = change( u );
```

Extends from Interfaces.IntegerSIBooleanSO (Integer Input Boolean Output continuous control block).

### Connectors

NameDescription
uConnector of Integer input signal
yConnector of Boolean output signal
Automatically generated Thu Oct 1 16:07:34 2020.