Equation symbols variable

Structure:

 symbols{1} Cells of strings Operator symbols (internal nodes)
 symbols{2} Cells of strings Variables symbols (terminator nodes)


The symbols{1} contains the operator symbols. E.g. symbols{1} = {'+','*','*sqrt'}.
The symbols{2} contains the terminal symbols. E.g. symbols{2} = {'u(k-1)','u(k-2)'}.

The gp-ols identification directly uses the symbols{1}, but not the symbols{2}. During the identification, only the size of the symbols{2} is used, it must be equal to the number of columns of X, i.e. length(symbols{2}) = size(X,2) (it is important!).
The gpols_result function uses the symbols{2} directly to write the equation.

Note: Because the gp-ols uses binary trees, every operator must be binary, i.e. every operator is used as: (...) <op> (..), e.g.: (..)+(..), (..)*sqrt(..), etc.

Example:

%Equation representation attributes
gene.symlist{1} = {'+','*','/'};
for j = 1:size(X,2),
  gene.symlist{2}{j} = sprintf('x%i',j);
end

Result:
gene.symlist{1} = 
    '+'    '*'    '/'
gene.symlist{2} = 
    'x1'    'x2'    'x3'    'x4'