EVAL command can be used to evaluate numerical, vector, and matrix expressions. These expressions may be built up from numerical constants, from scalar, vector, and matrix variables, and from a large number of EVAL functions, and operators.
// if the variable #v does not exist then the following command // assigns a table item to #v. $#v := eval vv(1,2,3,4) // if #v is a value item, then #v remains a value item.
EVAL command uses the following general syntax:
result := eval expression
result := evalcheck expression
An expression may be either a numerical expression, e.g.
result := eval (5 * 10) % 3
or a subcommand, e.g.
result := eval init(10,1,1)
or a combination thereof:
result := eval 5+max(fill(6,1,1))
If the expression is syntactically ill-formed, an error (
EVAL) or warning (
EVALCHECK) is reported. See the example script
expression_check.sts for details.
The following numerical objects are known to the
EVAL command. The fields of the table item
table are all numeric (you can use a parameter table). The value item
value can contain numbers, vectors or matrices. The wave item
wave is any wave item.
||a scalar constant. E.g.
||the content of the whole table||vector, matrix|
||the i-th row of the table||scalar, vector|
||the j-th column of the table||scalar, vector|
||the value of the i-th row and j-th column of the table||scalar|
||the content of the value item||scalar, vector, matrix|
||the i-th row of the value item||scalar, vector|
||the j-the column of the value item||scalar, vector|
||the value of the i-th row and j-th column of the value item||scalar|
||the signal from all channels||vector, matrix|
||the signal from channel ch (=1,2,...)||vector|
||the signal from all channels from sample b to sample b+l-1||vector, matrix|
||the signal from channel ch from sample b to sample b+l-1||vector|
Numerical Comparison Operators
EVAL command supports the following numerical comparison operators:
||less than or equal to|
||greater than or equal to|
||not equal to|
Note that two numbers/vectors/matrices are considered equal if (and only if)
- their dimensions are the same; and
- all elements are numerically equal.
EVAL command supports the following logical operators:
A C-like '
? :' selection operator is also supported:
result := eval 1 < 2 ? 1+2 : 1-2 // result is 3
Note that unlike C, nested uses of this operator must be surrounded by brackets, e.g.:
result := eval 1 > 2 ? (5 == 5 ? 5 : 0) : (4 == 5 ? 3 : 4) // result is 4