MATLAB Functions Help Desk

Purpose

Matrix and array arithmetic

Syntax

```A+B
A-B
A*B     A.*B
A/B     A./B
A\B     A.\B
A^B     A.^B
A'      A.'
```

Description

MATLAB has two different types of arithmetic operations. Matrix arithmetic operations are defined by the rules of linear algebra. Array arithmetic operations are carried out element-by-element. The period character (.) distinguishes the array operations from the matrix operations. However, since the matrix and array operations are the same for addition and subtraction, the character pairs `.+` and `.-` are not used.

 ```+ ``` Addition or unary plus. `A+B` adds `A` and `B`. `A` and `B` must have the same size, unless one is a scalar. A scalar can be added to a matrix of any size. ```- ``` Subtraction or unary minus. `A-B` subtracts `B` from `A`. `A` and `B` must have the same size, unless one is a scalar. A scalar can be subtracted from a matrix of any size. ```* ``` Matrix multiplication. `C = A`*`B` is the linear algebraic product of the matrices `A` and `B`. More precisely, For nonscalar `A` and `B`, the number of columns of `A` must equal the number of rows of `B`. A scalar can multiply a matrix of any size. ```.* ``` Array multiplication. `A`.*`B` is the element-by-element product of the arrays `A` and `B`. `A` and `B` must have the same size, unless one of them is a scalar. ```/ ``` Slash or matrix right division. `B/A` is roughly the same as `B`*`inv(A)`. More precisely, `B/A = (A'\B')'`. See` \`. ```./ ``` Array right division. `A./B` is the matrix with elements `A(i,j)/B(i,j)`. `A` and `B` must have the same size, unless one of them is a scalar. ```\ ``` Backslash or matrix left division. If `A` is a square matrix, `A\B` is roughly the same as` inv(A)`*`B`, except it is computed in a different way. If `A` is an `n`-by-`n` matrix and `B` is a column vector with `n` components, or a matrix with several such columns, then` X = A\B` is the solution to the equation AX = B computed by Gaussian elimination (see "Algorithm" for details). A warning message prints if `A` is badly scaled or nearly singular. ```  ``` If `A` is an `m`-by-`n` matrix with `m ~= n` and `B` is a column vector with `m` components, or a matrix with several such columns, then `X = A\B` is the solution in the least squares sense to the under- or overdetermined system of equations AX = B. The effective rank, `k`, of `A`, is determined from the QR decomposition with pivoting (see "Algorithm" for details). A solution `X` is computed which has at most `k` nonzero components per column. If `k < n`, this is usually not the same solution as `pinv(A)`*`B`, which is the least squares solution with the smallest` `norm, ||X||. ```.\ ``` Array left division. `A.\B` is the matrix with elements `B(i,j)/A(i,j)`. `A` and `B` must have the same size, unless one of them is a scalar. ```^ ``` Matrix power.` X^p` is `X` to the power `p`, if p is a scalar. If `p` is an integer, the power is computed by repeated multiplication. If the integer is negative, `X` is inverted first. For other values of `p`, the calculation involves eigenvalues and eigenvectors, such that if` [V,D] = eig(X)`, then `X^p = V`*`D.^p/V`. ```  ``` If `x` is a scalar and `P` is a matrix, `x^P` is `x` raised to the matrix power `P` using eigenvalues and eigenvectors. `X^P`, where `X` and` P` are both matrices, is an error. ```.^ ``` Array power. `A.^B` is the matrix with elements `A(i,j)` to the `B(i,j)` power. `A` and `B` must have the same size, unless one of them is a scalar. ```' ``` Matrix transpose. `A' `is the linear algebraic transpose of `A`. For complex matrices, this is the complex conjugate transpose. ```.' ``` Array transpose. `A.'` is the array transpose of `A`. For complex matrices, this does not involve conjugation.

Remarks

The arithmetic operators have M-file function equivalents, as shown:

 Binary addition `A+B` `plus(A,B)` Unary plus `+A` `uplus(A)` Binary subtraction `A-B` `minus(A,B)` Unary minus `-A` `uminus(A)` Matrix multiplication ```A*B ``` `mtimes(A,B)` Array-wise multiplication `A.*B` `times(A,B)` Matrix right division `A/B` `mrdivide(A,B)` Array-wise right division `A./B` `rdivide(A,B)` Matrix left division `A\B` `mldivide(A,B)` Array-wise left division `A.\B` `ldivide(A,B)` Matrix power `A^B` `mpower(A,B)` Array-wise power `A.^B` `power(A,B)` Complex transpose `A'` `ctranspose(A)` Matrix transpose `A.'` `transpose(A)`

Examples

Here are two vectors, and the results of various matrix and array operations on them, printed with `format` `rat`.

Matrix Operations

Array Operations

`x `

`1`

`2`

`3`

`y `

` 4`

` 5`

` 6`

`x' `

`1 2 3`

`y' `

` 4 5 6`

`x+y `

`5`

`7`

`9`

`x-y `

`-3`

`-3`

`-3`

`x + 2 `

`3`

`4`

`5`

`x-2 `

`-1`

` 0`

` 1`

`x * y `

`Error`

`x.*y `

` 4`

`10`

`18`

`x'*y `

`32`

`x'.*y `

`Error`

`x*y' `

` 4 5 6`

` 8 10 12`

`12 15 18`

`x.*y' `

`Error`

`x*2 `

`2`

`4`

`6`

`x.*2 `

` 2`

` 4`

` 6`

`x\y `

`16/7`

`x.\y `

` 4`

`5/2`

` 2`

`2\x`

`1/2`

` 1`

`3/2`

`2./x`

` 2`

` 1`

`2/3`

`x/y`

`0 0 1/6`

`0 0 1/3`

`0 0 1/2`

`x./y`

`1/4`

`2/5`

`1/2`

`x/2`

`1/2`

` 1`

`3/2`

`x./2`

`1/2`

` 1`

`3/2`

`x^y`

`Error`

`x.^y`

` 1`

` 32`

`729`

`x^2`

`Error`

`x.^2`

` 1`

` 4`

` 9`

`2^x`

`Error`

`2.^x`

` 2`

` 4`

` 8`

`(x+i*y)'`

`1 - 4i 2 - 5i 3 - 6i`

`(x+i*y).'`

`1 + 4i 2 + 5i 3 + 6i`

Algorithm

The specific algorithm used for solving the simultaneous linear equations denoted by `X = A\B` and `X = B/A` depends upon the structure of the coefficient matrix `A`.

The various matrix factorizations are computed by MATLAB implementations of the algorithms employed by LINPACK routines `ZGECO`, `ZGEFA` and `ZGESL` for square matrices and `ZQRDC` and `ZQRSL` for rectangular matrices. See the LINPACK Users' Guide for details.

Diagnostics

From matrix division, if a square `A` is singular:

```Matrix is singular to working precision.
```
From element-wise division, if the divisor has zero elements:

```Divide by zero.
```
On machines without IEEE arithmetic, like the VAX, the above two operations generate the error messages shown. On machines with IEEE arithmetic, only warning messages are generated. The matrix division returns a matrix with each element set to `Inf`; the element-wise division produces `NaN`s or `Inf`s where appropriate.

If the inverse was found, but is not reliable:

```Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate.  RCOND = xxx
```
From matrix division, if a nonsquare `A` is rank deficient:

```Warning: Rank deficient, rank = xxx tol = xxx
```

`det``         `Matrix determinant

`inv``         `Matrix inverse

`lu``          `LU matrix factorization

`orth``        `Range space of a matrix

`qr``          `Orthogonal-triangular decomposition

`rref``        `Reduced row echelon form

References

 Dongarra, J.J., J.R. Bunch, C.B. Moler, and G.W. Stewart, LINPACK Users' Guide, SIAM, Philadelphia, 1979.

[ Previous | Help Desk | Next ]