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.