mldivide | R Documentation |
Emulate the Matlab backslash operator “\” through QR decomposition.
mldivide(A, B, pinv = TRUE)
mrdivide(A, B, pinv = TRUE)
A, B |
Numerical or complex matrices; |
pinv |
logical; shall SVD decomposition be used; default true. |
mldivide
performs matrix left division (and mrdivide
matrix
right division). If A
is scalar it performs element-wise division.
If A
is square, mldivide
is roughly the same as
inv(A) %*% B
except it is computed in a different way —
using QR decomposition.
If pinv = TRUE
, the default, the SVD will be used as
pinv(t(A)%*%A)%*%t(A)%*%B
to generate results similar
to Matlab. Otherwise, qr.solve
will be used.
If A
is not square, x <- mldivide(A, b)
returnes a
least-squares solution that minimizes the length of the vector
A %*% x - b
(which is equivalent to norm(A %*% x - b, "F")
.
If A
is an n-by-p matrix and B
n-by-q, then the result of
mldivide(A, B)
is a p-by-q matrix (mldivide
).
mldivide(A, B)
corresponds to A\B
in Matlab notation.
# Solve a system of linear equations
A <- matrix(c(8,1,6, 3,5,7, 4,9,2), nrow = 3, ncol = 3, byrow = TRUE)
b <- c(1, 1, 1)
mldivide(A, b) # 0.06666667 0.06666667 0.06666667
A <- rbind(1:3, 4:6)
mldivide(A, c(1,1)) # -0.5 0 0.5 ,i.e. Matlab/Octave result
mldivide(A, c(1,1), pinv = FALSE) # -1 1 0 R qr.solve result
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.