From QERM Wiki
ADMB Handy operations and functions (aka ADMB cheat sheet)
Adapted from a Word document written by Carolina Minte-Vera.
Let V, X, Y be vectors and vi, xi, yi be the elements of the vectors.
Let M, N, A be matrices and mij, nij, aij be the elements of the matrices.
Let α be a scalar.
Matrix and vector operations
| Operation | Math notation | ADMB slow code | ADMB fast code
|
| Sum of two vectors | vi = xi + yi | V = X + Y | X+=Y
|
| Sum of scalar to a vector | vi = xi + α | V = X + nu | X+=nu
|
| Sum of two matrices | aij = mij + nij | A = M + N |
|
| Sum of a scalar to a matrix | aij = mij + α | A = M +alpha | M+=alpha
|
| Subtract two vectors | vi = xi − yi | V = X - Y | X-=Y
|
| Subtract a scalar from a vector | vi = xi − α | V=X-alpha | X-=alpha
|
| Subtract a scalar from a matrix | vi = xi − α | A=M-alpha | M-=alpha
|
| Subtract two matrices | aij = mij − nij | A=M-N | M-=N
|
| Vector dot product |
| alpha=X*Y |
|
| Outer product of two vectors | mij = xiyj | M=outer_prod(X,Y) |
|
| Multiply a scalar by a vector | xi = αyi | X=alpha*Y | Y*=alpha
|
| Multiply a vector by a scalar | xi = yiα | X=Y*alpha |
|
| Multiply a scalar by a matrix | mij = αaij | A=alpha*M | M*=alpha
|
| Multiply a vector by a matrix |
| X=Y*M |
|
| Multiply a matrix by a vector |
| X=M*Y |
|
| Multiply two matrices |
| A=M*N |
|
| Division of vector by scalar | yi = xi / α | Y=X/alpha | X/=alpha
|
| Division of scalar by a vector | yi = α / xi | Y=alpha/X |
|
| Division of a matrix by a scalar | mij = aij / α | M=N/alpha |
|
Element–wise (e-w) operations in a matrix or vector object
| Operation [need objects of the same dimension] | Math notation | ADMB code
|
| Vectors e-w multiplication | vi = xiyi | V=elem_prod(X,Y)
|
| Vectors e-w division | vi = xi / yi | V=elem_div(X,Y)
|
| Matrices e-w multiplication | mij = aijnij | M=elem_prod(A,N)
|
| Matrices e-w division | mij = aij / nij | M=elem_div(A,N)
|
| Vectors e-w multiplication | vi = xiyi | V=elem_prod (X,Y)
|
Other matrix or vector operations
| Operation | Math notation | ADMB code
|
| Norm of a vector | | alpha=norm(V)
|
| Norm square of a vector | | alpha=norm2(V)
|
| Norm of a matrix | | alpha=norm(M)
|
| Norm square of a matrix | | alpha=norm2(M)
|
| Sum over elements of a vector |
| alpha=sum(V)
|
| Row sums of a matrix object |
| X=rowsum(M)
|
| Column sum of a matrix object |
| Y=colsum(M)
|
| Concatenation | X = (x1,x2,x3),Y = (y1,y2),V = (x1,x2,x3,y1,y2) | V=X&Y
|
Still more matrix or vector operations
| Operation | ADMB code
|
| Determinant (must be a square matrix cols=rows) | alpha=det(M)
|
| Logarithm of the determinant? (must be a square matrix cols=rows), sgn is an integer. Not explained in the manual, but used in the codes. | alpha=ln_det(M,sgn)
|
| Inverse (must be a square matrix cols=rows) | N=inv(M)
|
| Minimum value of a vector object | alpha=min(V)
|
| Maximum value of a vector object | alpha=max(V)
|
| Eigenvalues of a symmetric matrix | V=Eigenvalues(M)
|
| Eigenvectors of a symmetric matrix | N=eigenvectors(M)
|
| Identity matrix function | M=identity_matrix(int min, int max)
|
Useful functions
| Function | Action
|
current_phase() | return an integer that is the value of the current phase
|
last_phase() | return a binary: "true" if the current phase is the last phase and "false" (=0) otherwise
|
Active(Par) | return a binary: "true" if the parameter Par is active in the current phase and "false" (=0) otherwise
|
mceval_phase() | return a binary: "true" if the current phase is the mceval phase and "false" (=0) otherwise
|
bolinha.initialize() | Initializes (sets all elements equal to zero) the object bolinha
|