You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: ETS.m
    path of file: ./repos/robotics-toolbox-matlab
    
    the code of the file until where you have to start completion: %ETS Elementary Transform Sequence class
%
% Manipulate a sequence (vector) of elementary transformations
%  - ETS.TX
%  - ETS.TY
%  - ETS.TZ
%  - ETS.RX
%  - ETS.RY
%  - ETS.RZ
%
% Methods::
%  ETS          Construct a sequence from string
%  isrot        True if rotational transform
%  istrans      True if translational transform
%  isjoint      Is ETS a function of qj
%  njoints      Maximum joint variable index
%  axis         Axis of translation or rotation
%  find         Find ETS that is a function of qj
%  subs         Substitute element of sequence
%-
%  eval         Evaluate ETS
%  jacobian     Compute Jacobian of ETS
%-
%  display      Display a sequence in human readable form
%  char         Convert
    
function of qj
%  njoints      Maximum joint variable index
%  axis         Axis of translation or rotation
%  find         Find ETS that is a function of qj
%  subs         Substitute element of sequence
%-
%  eval         Evaluate ETS
%  jacobian     Compute Jacobian of ETS
%-
%  display      Display a sequence in human readable form
%  char         Convert sequence to a string
%
% Example::
%         ets = ETS('Rx(q1)Tx(a1)Ry(q2)Ty(a3)Rz(q3)Rx(pi/2)')
%         ets.eval([1 2 3]);
%
% Notes::
% - Still experimental
%
% See also trchain, trchain2.

% TODO:
%  - handle 2D case
%  - do DHFactor
%  - accept parameters from a passed struct rather as well as workspace


% Copyright (C) 1993-2017, by Peter I. Corke
%
% This file is part of The Robotics Toolbox for MATLAB (RTB).
%
% RTB is free software: you can redistribute it and/or modify
% it under the terms of the GNU Lesser General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% RTB is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU Lesser General Public License for more details.
%
% You should have received a copy of the GNU Leser General Public License
% along with RTB.  If not, see <http://www.gnu.org/licenses/>.
%
% http://www.petercorke.com

classdef ETS < handle
    
    properties
        type %  ETS.TX, ETS.TY, ETS.TZ, ETS.RX, ETS.RY, ETS.RZ
        
        val
        joint  % joint number, if a joint, else 0
        constant    % eg. 90, for angles
        sign
        symconstant  % eg. L1, for lengths
        
        % DH parameters
        theta
        D
        A
        alpha
        offset
        prismatic
    end