Both of them are direct solver to solve linear systems (opposing to iterative solver). `mldivide` does perform the tests for $A$ in solving $Ax = b$. Please see [Allan's answer in this thread][1] for more information. Also see MATLAB's help on [`mldivide` algorithm][2] here. > `mldivide` for square matrices: If A is symmetric and has real, positive diagonal elements, MATLAB attempts a Cholesky factorization. If the Cholesky factorization fails, MATLAB performs a symmetric, indefinite factorization. If A is upper Hessenberg, MATLAB uses Gaussian elimination to reduce the system to a triangular matrix. If A is square but is neither permuted triangular, symmetric and positive definite, or Hessenberg, then MATLAB performs a general triangular factorization using LU factorization with partial pivoting > `linsolve` for square matrices: LU factorization with partial pivoting > `mldivide` and `linsolve` for rectangular matrices: QR factorization In `linsolve` as the help doc suggests in mathworks website, you could avoid the extra testing process (Allan used the word "overhead" in his answer) by using `opts` if and only if you *know* what $A$ is like in advance. For large problems, you could save some time. For example: opts.POSDEF = true; linsolve(A,b,opts) would return $x$ if you know $A$ is positive definite in advance. However, an incorrectly chosen `opts` leads to a wrong result. If certain criteria are met, `linsolve` and `mldivide` do utilize the same factorization process. For example, for a *dense* positive definite system satisfying certain properties, or you have an overdetermined system and both perform least square fitting. Moreover, `linsolve` could also perform [symbolic computation][3]. This is handy when you have a small underdetermined system which has infinite number of solutions. `linsolve` enables you to solve it symbolically, `mldivide` can not do that. However, if the variables are not declared symbolically, `mldivide` and `linsolve` would give you the same warning message "Matrix is singular to working precision." Last but not least, `linsolve` does not support *sparse* systems like the following matrix (blue dot means non-zero entry). While `mldivide` could handle sparse systems robustly when the size is under 200k by 200k. ![sparse example][4] [1]:http://scicomp.stackexchange.com/questions/1001/how-does-the-matlab-backslash-operator-solve-ax-b-for-square-matrices [2]:http://www.mathworks.com/help/matlab/math/systems-of-linear-equations.html [3]:http://www.mathworks.com/help/symbolic/linsolve.html [4]: https://i.sstatic.net/OUG5i.png