# dot

## Syntax

``C = dot(A,B)``
``C = dot(A,B,dim)``

## Description

example

````C = dot(A,B)` returns the scalar dot product of `A` and `B`.If `A` and `B` are vectors, then they must have the same length.If `A` and `B` are matrices or multidimensional arrays, then they must have the same size. In this case, the `dot` function treats `A` and `B` as collections of vectors. The function calculates the dot product of corresponding vectors along the first array dimension whose size does not equal 1.```

example

````C = dot(A,B,dim)` evaluates the dot product of `A` and `B` along dimension, `dim`. The `dim` input is a positive integer scalar.```

## Examples

collapse all

Create two simple, three-element vectors.

```A = [4 -1 2]; B = [2 -2 -1];```

Calculate the dot product of `A` and `B`.

`C = dot(A,B)`
```C = 8 ```

The result is `8` since

` C = A(1)*B(1) + A(2)*B(2) + A(3)*B(3)`

Create two complex vectors.

```A = [1+i 1-i -1+i -1-i]; B = [3-4i 6-2i 1+2i 4+3i];```

Calculate the dot product of `A` and `B`.

`C = dot(A,B)`
```C = 1.0000 - 5.0000i ```

The result is a complex scalar since `A` and `B` are complex. In general, the dot product of two complex vectors is also complex. An exception is when you take the dot product of a complex vector with itself.

Find the inner product of `A` with itself.

`D = dot(A,A)`
```D = 8 ```

The result is a real scalar. The inner product of a vector with itself is related to the Euclidean length of the vector, `norm(A)`.

Create two matrices.

```A = [1 2 3;4 5 6;7 8 9]; B = [9 8 7;6 5 4;3 2 1];```

Find the dot product of `A` and `B`.

`C = dot(A,B)`
```C = 1×3 54 57 54 ```

The result, `C`, contains three separate dot products. `dot` treats the columns of `A` and `B` as vectors and calculates the dot product of corresponding columns. So, for example, `C(1) = 54` is the dot product of `A(:,1)` with `B(:,1)`.

Find the dot product of `A` and `B`, treating the rows as vectors.

`D = dot(A,B,2)`
```D = 3×1 46 73 46 ```

In this case, `D(1) = 46` is the dot product of `A(1,:)` with `B(1,:)`.

Create two multidimensional arrays.

`A = cat(3,[1 1;1 1],[2 3;4 5],[6 7;8 9])`
```A = A(:,:,1) = 1 1 1 1 A(:,:,2) = 2 3 4 5 A(:,:,3) = 6 7 8 9 ```
`B = cat(3,[2 2;2 2],[10 11;12 13],[14 15; 16 17])`
```B = B(:,:,1) = 2 2 2 2 B(:,:,2) = 10 11 12 13 B(:,:,3) = 14 15 16 17 ```

Calculate the dot product of `A` and `B` along the third dimension (`dim = 3`).

`C = dot(A,B,3)`
```C = 2×2 106 140 178 220 ```

The result, `C`, contains four separate dot products. The first dot product, `C(1,1) = 106`, is equal to the dot product of `A(1,1,:)` with `B(1,1,:)`.

## Input Arguments

collapse all

Input arrays, specified as numeric arrays.

Data Types: `single` | `double`
Complex Number Support: Yes

Dimension to operate along, specified as a positive integer scalar. If no value is specified, the default is the first array dimension whose size does not equal 1.

Consider two 2-D input arrays, `A` and `B`:

• `dot(A,B,1)` treats the columns of `A` and `B` as vectors and returns the dot products of corresponding columns.

• `dot(A,B,2)` treats the rows of `A` and `B` as vectors and returns the dot products of corresponding rows. `dot` returns `conj(A).*B` if `dim` is greater than `ndims(A)`.

collapse all

### Scalar Dot Product

The scalar dot product of two real vectors of length n is equal to

`$u\text{\hspace{0.17em}}·\text{\hspace{0.17em}}v=\sum _{i=1}^{n}{u}_{i}{v}_{i}={u}_{1}{v}_{1}+{u}_{2}{v}_{2}+...+{u}_{n}{v}_{n}\text{\hspace{0.17em}}.$`

This relation is commutative for real vectors, such that `dot(u,v)` equals `dot(v,u)`. If the dot product is equal to zero, then u and v are perpendicular.

For complex vectors, the dot product involves a complex conjugate. This ensures that the inner product of any vector with itself is real and positive definite.

`$u\text{\hspace{0.17em}}·\text{\hspace{0.17em}}v=\sum _{i=1}^{n}{\overline{u}}_{i}{v}_{i}\text{\hspace{0.17em}}.$`

Unlike the relation for real vectors, the complex relation is not commutative, so `dot(u,v)` equals `conj(dot(v,u))`.

## Algorithms

• When inputs `A` and `B` are real or complex vectors, the `dot` function treats them as column vectors and `dot(A,B)` is the same as `sum(conj(A).*B)`.

• When the inputs are matrices or multidimensional arrays, the `dim` argument determines which dimension the `sum` function operates on. In this case, `dot(A,B)` is the same as `sum(conj(A).*B,dim)`.

## Version History

Introduced before R2006a