STK_FEVAL evaluates a function at given evaluation points

 CALL: Z = stk_feval (F, X)

    evaluates the function F on the evaluation points X, where

     * F can be either a function handle or a function name (string),
       or a cell-array of function handles or names, and
     * X can be either a numerical array or an stk_dataframe object.

    The output Z contains the evaluation results. The number of rows of Z is
    the same as the number of rows of X.

     * If F is a single function (name of handle) that returns row vectors with
       J elements, then Z has J columns and Z(i, :) is equal to F(X(i, :)).
     * If F is a cell-array of functions (names or handles), where F{k} returns
       row vectors J_k elements, then Z has J = J_1 + ... + J_K elements, and
       Z(i, :) is equal to [F{1}(X(i, :)) ... F{K}(X(i, :))].

    This two-argument form assumes that F supports vectorized evaluations.

 EXAMPLE:

    f = {@sin, @cos};
    x = stk_sampling_regulargrid (100, 1, [0; 2*pi]);
    x.colnames = {'x'};
    y = stk_feval (f, x);
    plot (x, y);

 CALL: Z = stk_feval (F, X, DISPLAY_PROGRESS)

    displays progress messages if DISPLAY_PROGRESS is true, and does the same
    as the previous form otherwise. Displaying a progress message is useful if
    each evaluation of F requires a significant computation time.

    This three-argument form assumes that F supports vectorized evaluations if
    DISPLAY_PROGRESS is false, and performs evaluations one by one otherwise.

 NOTE: output type

   The output of stk_feval is an stk_dataframe object if X is, with the same
   row names and with column names determined automatically. Otherwise, the
   type of the output of stk_feval is determined by the type of the output of
   each function that is evaluated (together with the usual rules for concate-
   nating arrays of different types, if necessary).

 CALL: Z = stk_feval (F, X, DISPLAY_PROGRESS, DF_OUT)

   returns an stk_dataframe output if DF_OUT is true (even if X is not an
   stk_dataframe object itself), and let the usual concatenation rules
   determine the output type otherwise (even if X is an stk_dataframe).

 CALL: Z = stk_feval (F, X, DISPLAY_PROGRESS, DF_OUT, VECTORIZED)

   controls whether function evaluations are performed in a "vectorized" manner
   (i.e., all rows at once) or one row after the other. This form can be used
   to override the default rules explained above. Vectorized evaluations are
   usually faster but some functions do not support them.

 See also feval

Package: stk