knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
This vignette is adapted from the official Armadillo documentation.
The following table uses V
for vectors, M
for matrices, Q
for cubes
and F
for fields. For operations, A
, B
and C
denote matrices. Because
MATLAB indexes from 1 (as R does), the k-th column in MATLAB has index k
but
in C++ it has index k-1
.
| Matlab/Octave | Armadillo | Notes |
|---------------|----------------|-----------------------------|
| M(1, 1)
| M(0, 0)
| indexing in C++ starts at 0 |
| M(k, k)
| M(k-1, k-1)
| indexing in C++ starts at 0 |
| size(M,1)
| M.n_rows
| read only |
| size(M,2)
| M.n_cols
| read only |
| size(Q,3)
| Q.n_slices
| |
| numel(A)
| M.n_elem
| |
| M(:, k)
| M.col(k-1)
| |
| M(k, :)
| M.row(k)
| |
| M(:, p:q)
| M.cols(p, q)
| |
| M(p:q, :)
| M.rows(p, q)
| |
| M(p:q, r:s)
| M(span(p,q), span(r,s))
| |
| Q(:, :, k)
| Q.slice(k)
| |
| Q(:, :, t:u)
| Q.slices(t, u)
| |
| Q(p:q, r:s, t:u)
| Q( span(p,q), span(r,s), span(t,u))
| |
| M'
| M.t()
or trans(M)
| matrix transpose / Hermitian transpose (for complex matrices, the conjugate of each element is taken) |
| M = zeros(size(M))
| M.zeros()
| |
| M = ones(size(M))
| M.ones()
| |
| M = zeros(k)
| M = zeros<mat>(k,k)
| |
| M = ones(k)
| M = ones<mat>(k,k)
| |
| C = complex(A,B)
| cx_mat C = cx_mat(A,B)
| |
| A .* B
| A % B
| element-wise multiplication |
| A ./ B
| A / B
| element-wise division |
| A \ B
| solve(A,B)
| more efficient than inv(A)*B
|
| M = M + 1
| M++
| |
| M = M - 1
| M--
| |
| M = [1 2; 3 4;]
| M = {{1, 2}, {3, 4}}
| element initialization |
| M = A(:)
| M = vectorise(A)
| |
| M = [A B]
| M = join_horiz(A,B)
| |
| M = [A; B]
| M = join_vert(A,B)
| |
| M
| cout << M << endl
or M.print("M =")
| |
| A = randn(2,3)
| mat A = randn(2,3)
| |
| B = randn(4,5)
| mat B = randn(4,5)
| |
| F = {A; B}
| field<mat> F(2,1)
, F(0,0) = A
or F(1,0) = B
| fields store arbitrary objects, such as matrices |
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.