fold

Combine (fold) vector using function

Syntax

fold(fun,v)
fold(fun,v,defaultVal)

Description

example

fold(fun,v) folds v by using fun. That is, fold calls fun on the first two elements of v, and then repeatedly calls fun on the result and the next element till the last element is combined. Programmatically, the fold operation is fold(fun,v) = fun(fold(fun,v(1:end-1)),v(end)).

example

fold(fun,v,defaultVal) returns the value defaultVal if v is empty.

Examples

Fold Vector Using Function

Fold a vector of symbolic variables using the power function. The output shows how fold combines elements of the vector from left to right by using the specified function.

syms a b c d e
fold(@power, [a b c d e])
ans =
(((a^b)^c)^d)^e

Assume Variable Belongs to Set of Values

Assume the variable x belongs to the set of values 1, 2, ..., 10 by applying or to the conditions x == 1, ..., x == 10 using fold. Check that the assumption is set by using assumptions.

syms x
cond = fold(@or, x == 1:10);
assume(cond)
assumptions
ans =
x == 1 | x == 2 | x == 3 | x == 4 | x == 5 |...
 x == 6 | x == 7 | x == 8 | x == 9 | x == 10

Specify Default Value of Fold Operation

Specify the default value of fold when the input is empty by specifying the third argument. If the third argument is not specified and the input is empty, then fold throws an error.

When creating a function to sum a vector, specify a default value of 0, such that the function returns 0 when the vector is empty.

sumVector = @(x) fold(@plus, x, 0);
sumVector([])
ans =
     0

Input Arguments

collapse all

Function used to fold vector, specified as a function handle.

Example: @or

Vector to fold, specified as a vector, symbolic vector, or cell vector. If an element of v is a symbolic function, then the formula of the symbolic function is used by calling formula.

Default value of fold operation, specified as a number, vector, matrix, or multidimensional array, or a symbolic number, variable, vector, matrix, multidimensional array, function, or expression.

See Also

|

Introduced in R2016b