Documentation

dot

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).