Estimation of signal parameters via rotational invariance techniques

Signal processing method
(Learn how and when to remove this message)
Example of separation into subarrays (2D ESPRIT)

Estimation theory, or estimation of signal parameters via rotational invariant techniques (ESPRIT), is a technique to determine the parameters of a mixture of sinusoids in background noise. This technique was first proposed for frequency estimation.[1] However, with the introduction of phased-array systems in everyday technology, it is also used for angle of arrival estimations.[2]

General description

System model

The model under investigation is the following (1-D version):

y m [ t ] = k = 1 K a m , k x k [ t ] + n m [ t ] {\displaystyle y_{m}[t]=\sum _{k=1}^{K}a_{m,k}x_{k}[t]+n_{m}[t]}

This model describes a system that is fed with K {\textstyle K} inputs signals x k [ t ] C {\textstyle x_{k}[t]\in \mathbb {C} } , with k = 1 , , K {\textstyle k=1,\ldots ,K} , and produces M {\textstyle M} output signals y m [ t ] C {\textstyle y_{m}[t]\in \mathbb {C} } , with m = 1 , , M {\textstyle m=1,\ldots ,M} . The system's output is sampled at discrete time instances t {\displaystyle t} . All K {\textstyle K} input signals are weighted and summed up. There are separate weights a m , k {\textstyle a_{m,k}} for each input signal and for each output signal. The quantity n m [ t ] C {\textstyle n_{m}[t]\in \mathbb {C} } denotes noise added by the system.

The one-dimensional form of ESPRIT can be applied if the weights have the following form.

a m , k = e j ( m 1 ) w k {\displaystyle a_{m,k}=e^{-j(m-1)w_{k}}}
That is, the weights are complex exponential functions, and the phases are integer multiples of some radial frequency w k {\displaystyle w_{k}} . Note that this frequency only depends on the index of the system's input.

The goal of ESPRIT is to estimate the radial frequencies w k {\displaystyle w_{k}} given the outputs y m [ t ] C {\textstyle y_{m}[t]\in \mathbb {C} } and the number of input signals K {\textstyle K} .

Since the radial frequencies are the actual objectives, we will change the notation from a m , k {\textstyle a_{m,k}} to a m ( w k ) {\textstyle a_{m}(w_{k})} .

y m [ t ] = k = 1 K a m ( w k ) x k [ t ] + n m [ t ] {\displaystyle y_{m}[t]=\sum _{k=1}^{K}a_{m}(w_{k})x_{k}[t]+n_{m}[t]}
Let us now change to a vector notation by putting the weights a m ( w k ) {\textstyle a_{m}(w_{k})} in a column vector a ( w k ) {\displaystyle \mathbf {a} (w_{k})} .
a ( w k ) := [ 1 e j w k e j 2 w k . . . e j ( M 1 ) w k ] T {\displaystyle \mathbf {a} (w_{k}):=[1\quad e^{-jw_{k}}\quad e^{-j2w_{k}}\quad ...\quad e^{-j(M-1)w_{k}}]^{\mathrm {T} }}
Now, the system model can be rewritten using a ( w k ) {\textstyle \mathbf {a} (w_{k})} and the output vector y [ t ] {\textstyle \mathbf {y} [t]} as follows.
y [ t ] = k = 1 K a ( w k ) x k [ t ] + n [ t ] {\displaystyle \mathbf {y} [t]=\sum _{k=1}^{K}\mathbf {a} (w_{k})x_{k}[t]+\mathbf {n} [t]}

Dividing into virtual sub-arrays

Maximum overlapping of two sub-arrays (N denotes number of sensors in the array, m is the number of sensors in each sub-array, and J 1 {\displaystyle J_{1}} and J 2 {\displaystyle J_{2}} are selection matrices)

The basis of ESPRIT is that the weight vector a ( w k ) {\textstyle \mathbf {a} (w_{k})} has the property that adjacent entries are related as follows:

[ a ( w k ) ] m + 1 = e j w k [ a ( w k ) ] m {\displaystyle [\mathbf {a} (w_{k})]_{m+1}=e^{-jw_{k}}[\mathbf {a} (w_{k})]_{m}}

In order to write down this property for the whole vector a ( w k ) {\displaystyle \mathbf {a} (w_{k})} we define two selection matrices J 1 {\displaystyle \mathbf {J} _{1}} and J 2 {\displaystyle \mathbf {J} _{2}} :

J 1 = [ I M 1 0 ] J 2 = [ 0 I M 1 ] {\displaystyle {\begin{aligned}\mathbf {J} _{1}&=[\mathbf {I} _{M-1}\quad \mathbf {0} ]\\\mathbf {J} _{2}&=[\mathbf {0} \quad \mathbf {I} _{M-1}]\end{aligned}}}
Here, I M 1 {\displaystyle \mathbf {I} _{M-1}} is an identity matrix of size ( M 1 ) × ( M 1 ) {\textstyle (M-1)\times (M-1)} and 0 {\displaystyle \mathbf {0} } is a vector of zeros. The vector J 1 a ( w k ) {\displaystyle \mathbf {J} _{1}\mathbf {a} (w_{k})} contains all elements of a ( w k ) {\displaystyle \mathbf {a} (w_{k})} except the last one. The vector J 2 a ( w k ) {\displaystyle \mathbf {J} _{2}\mathbf {a} (w_{k})} contains all elements of a ( w k ) {\displaystyle \mathbf {a} (w_{k})} except the first one. Therefore, we can write:
J 2 a ( w k ) = e j w k J 1 a ( w k ) {\displaystyle \mathbf {J} _{2}\mathbf {a} (w_{k})=e^{-jw_{k}}\mathbf {J} _{1}\mathbf {a} (w_{k})}
In general, we have multiple sinusoids with radial frequencies w 1 , w 2 , . . . w K {\displaystyle w_{1},w_{2},...w_{K}} . Therefore, we put the corresponding weight vectors a ( w 1 ) , a ( w 2 ) , . . . , a ( w K ) {\displaystyle \mathbf {a} (w_{1}),\mathbf {a} (w_{2}),...,\mathbf {a} (w_{K})} into a Vandermonde matrix A {\displaystyle \mathbf {A} } .
A := [ a ( w 1 ) a ( w 2 ) . . . a ( w K ) ] {\displaystyle \mathbf {A} :=[\mathbf {a} (w_{1})\quad \mathbf {a} (w_{2})\quad ...\quad \mathbf {a} (w_{K})]}
Moreover, we define a matrix H {\displaystyle \mathbf {H} } which has complex exponentials on its main diagonal and zero in all other places.

H := [ e j w 1 e j w 2 e j w K ] {\displaystyle {\mathbf {H} }:={\begin{bmatrix}e^{-jw_{1}}&\\&e^{-jw_{2}}\\&&\ddots \\&&&e^{-jw_{K}}\end{bmatrix}}}
Now, we can write down the property a ( w k ) {\displaystyle \mathbf {a} (w_{k})} for the whole matrix A {\displaystyle \mathbf {A} } .
J 2 A = J 1 A H {\displaystyle \mathbf {J} _{2}\mathbf {A} =\mathbf {J} _{1}\mathbf {A} \mathbf {H} }
Note: H {\displaystyle \mathbf {H} } is multiplied from the right such that it scales each column of A {\displaystyle \mathbf {A} } by the same value.

In the next sections, we will use the following matrices:

A 1 := J 1 A A 2 := J 2 A {\displaystyle {\begin{aligned}\mathbf {A} _{1}&:=\mathbf {J} _{1}\mathbf {A} \\\mathbf {A} _{2}&:=\mathbf {J} _{2}\mathbf {A} \end{aligned}}}

Here, A 1 {\displaystyle \mathbf {A} _{1}} contains the first M 1 {\displaystyle M-1} rows of A {\displaystyle \mathbf {A} } , while A 2 {\displaystyle \mathbf {A} _{2}} contains the last M 1 {\displaystyle M-1} rows of A {\displaystyle \mathbf {A} } .

Hence, the basic property becomes:

A 2 = A 1 H {\displaystyle \mathbf {A} _{2}=\mathbf {A} _{1}\mathbf {H} }

Notice that H {\displaystyle \mathbf {H} } applies a rotation to the matrix A 1 {\displaystyle \mathbf {A} _{1}} in the complex plane. ESPRIT exploits similar rotations from the covariance matrix of the measured data.

Signal subspace

The relation A 2 = A 1 H {\displaystyle \mathbf {A} _{2}=\mathbf {A} _{1}\mathbf {H} } is the first major observation required for ESPRIT. The second major observation concerns the signal subspace that can be computed from the output signals y [ t ] {\textstyle \mathbf {y} [t]} .

We will now look at multiple-time instances t = 1 , 2 , 3 , , T {\textstyle t=1,2,3,\dots ,T} . For each time instance, we measure an output vector y [ t ] {\textstyle \mathbf {y} [t]} . Let Y {\textstyle \mathbf {Y} } denote the matrix of size M × T {\displaystyle M\times T} comprising all of these measurements.

Y := [ y [ 1 ] y [ 2 ] y [ T ] ] {\displaystyle \mathbf {Y} :={\begin{bmatrix}\mathbf {y} [1]&\mathbf {y} [2]&\dots &\mathbf {y} [T]\end{bmatrix}}}

Likewise, let us put all input signals x k [ t ] {\textstyle x_{k}[t]} into a matrix X {\textstyle \mathbf {X} } .

X := [ x 1 [ 1 ] x 1 [ 2 ] x 1 [ T ] x 2 [ 1 ] x 2 [ 2 ] x 2 [ T ] x K [ 1 ] x K [ 2 ] x K [ T ] ] {\displaystyle \mathbf {X} :={\begin{bmatrix}x_{1}[1]&x_{1}[2]&\dots &x_{1}[T]\\x_{2}[1]&x_{2}[2]&\dots &x_{2}[T]\\\vdots &\vdots &\ddots &\vdots \\x_{K}[1]&x_{K}[2]&\dots &x_{K}[T]\end{bmatrix}}}

The same we do for the noise components:

N := [ n [ 1 ] n [ 2 ] n [ T ] ] {\displaystyle \mathbf {N} :={\begin{bmatrix}\mathbf {n} [1]&\mathbf {n} [2]&\dots &\mathbf {n} [T]\end{bmatrix}}}

The system model can now be written as

Y = A X + N {\displaystyle \mathbf {Y} =\mathbf {A} \mathbf {X} +\mathbf {N} }

The singular value decomposition (SVD) of Y {\textstyle \mathbf {Y} } is given as

Y = U E V {\displaystyle \mathbf {Y} =\mathbf {U} \mathbf {E} \mathbf {V} ^{*}}
where U {\textstyle \mathbf {U} } and V {\textstyle \mathbf {V} } are unitary matrices of sizes M × M {\textstyle M\times M} and T × T {\textstyle T\times T} , respectively. E {\textstyle \mathbf {E} } is a non-rectangular diagonal matrix of size M × T {\textstyle M\times T} that holds the singular values from the largest (top left) in descending order. The operator * denotes the complex-conjugate transpose (Hermitian transpose)

Let us assume that T M {\textstyle T\geq M} , which means that the number of times T {\textstyle T} that we conduct a measurement is at least as large as the number of output signals M {\textstyle M} .

Notice that in the system model, we have K {\textstyle K} input signals. We presume that the K {\textstyle K} largest singular values stem from these input signals. All other singular values are presumed to stem from noise. That is, if there was no noise, there would only be K {\textstyle K} non-zero singular values. We will now decompose each SVD matrix into submatrices, where some submatrices correspond to the input signals and some correspond to the input noise, respectively:

U = [ U S U N ] , E = [ E S 0 0 0 E N 0 ] , V = [ V S V N V 0 ] {\displaystyle {\begin{aligned}\mathbf {U} ={\begin{bmatrix}\mathbf {U} _{\mathrm {S} }&\mathbf {U} _{\mathrm {N} }\end{bmatrix}},&&\mathbf {E} ={\begin{bmatrix}\mathbf {E} _{\mathrm {S} }&\mathbf {0} &\mathbf {0} \\\mathbf {0} &\mathbf {E} _{\mathrm {N} }&\mathbf {0} \end{bmatrix}},&&\mathbf {V} ={\begin{bmatrix}\mathbf {V} _{\mathrm {S} }&\mathbf {V} _{\mathrm {N} }&\mathbf {V} _{\mathrm {0} }\end{bmatrix}}\end{aligned}}}
Here, U S C M × K {\textstyle \mathbf {U} _{\mathrm {S} }\in \mathbb {C} ^{M\times K}} and V S C N × K {\textstyle \mathbf {V} _{\mathrm {S} }\in \mathbb {C} ^{N\times K}} contain the first K {\textstyle K} columns of U {\textstyle \mathbf {U} } and V {\textstyle \mathbf {V} } , respectively. E S C K × K {\textstyle \mathbf {E} _{\mathrm {S} }\in \mathbb {C} ^{K\times K}} is a diagonal matrix comprising the K {\textstyle K} largest singular values. The SVD can be equivalently written as follows.
Y = U S E S V S + U N E N V N {\displaystyle \mathbf {Y} =\mathbf {U} _{\mathrm {S} }\mathbf {E} _{\mathrm {S} }\mathbf {V} _{\mathrm {S} }^{*}+\mathbf {U} _{\mathrm {N} }\mathbf {E} _{\mathrm {N} }\mathbf {V} _{\mathrm {N} }^{*}}
U S {\textstyle \mathbf {U} _{\mathrm {S} }} , ⁣ V S {\textstyle \mathbf {V} _{\mathrm {S} }} , and E S {\textstyle \mathbf {E} _{\mathrm {S} }} represent the contribution of the input signal x k [ t ] {\textstyle x_{k}[t]} to Y {\textstyle \mathbf {Y} } . Therefore, we will call U S {\textstyle \mathbf {U} _{\mathrm {S} }} the signal subspace. In contrast, U N {\textstyle \mathbf {U} _{\mathrm {N} }} , V N {\textstyle \mathbf {V} _{\mathrm {N} }} , and E N {\textstyle \mathbf {E} _{\mathrm {N} }} represent the contribution of noise n m [ t ] {\textstyle n_{m}[t]} to Y {\textstyle \mathbf {Y} } .

Hence, by using the system model we can write:

A X = U S E S V S {\displaystyle \mathbf {A} \mathbf {X} =\mathbf {U} _{\mathrm {S} }\mathbf {E} _{\mathrm {S} }\mathbf {V} _{\mathrm {S} }^{*}}
and
N = U N E N V N {\displaystyle \mathbf {N} =\mathbf {U} _{\mathrm {N} }\mathbf {E} _{\mathrm {N} }\mathbf {V} _{\mathrm {N} }^{*}}
By modifying the second-last equation, we get:
U S E S V S = A X V S U S E S V S V S I = A X V S U S E S = A X V S E S 1 U S E S E S 1 I = A X V S E S 1 U S = A X V S E S 1 =: F U S = A F {\displaystyle {\begin{aligned}\mathbf {U} _{\mathrm {S} }\mathbf {E} _{\mathrm {S} }\mathbf {V} _{\mathrm {S} }^{*}&=\mathbf {A} \mathbf {X} &\cdot \mathbf {V} _{\mathrm {S} }\\\mathbf {U} _{\mathrm {S} }\mathbf {E} _{\mathrm {S} }\underbrace {\mathbf {V} _{\mathrm {S} }^{*}\mathbf {V} _{\mathrm {S} }} _{\mathbf {I} }&=\mathbf {A} \mathbf {X} \mathbf {V} _{\mathrm {S} }\\\mathbf {U} _{\mathrm {S} }\mathbf {E} _{\mathrm {S} }&=\mathbf {A} \mathbf {X} \mathbf {V} _{\mathrm {S} }&\cdot \mathbf {E} _{\mathrm {S} }^{-1}\\\mathbf {U} _{\mathrm {S} }\underbrace {\mathbf {E} _{\mathrm {S} }\mathbf {E} _{\mathrm {S} }^{-1}} _{\mathbf {I} }&=\mathbf {A} \mathbf {X} \mathbf {V} _{\mathrm {S} }\mathbf {E} _{\mathrm {S} }^{-1}\\\mathbf {U} _{\mathrm {S} }&=\mathbf {A} \underbrace {\mathbf {X} \mathbf {V} _{\mathrm {S} }\mathbf {E} _{\mathrm {S} }^{-1}} _{=:\mathbf {F} }\\\mathbf {U} _{\mathrm {S} }&=\mathbf {A} \mathbf {F} \end{aligned}}}
That is, the signal subspace U S {\textstyle \mathbf {U} _{\mathrm {S} }} is the product of the matrix A {\textstyle \mathbf {A} } and some other matrix F {\textstyle \mathbf {F} } . In the following, it is only important that there exist such an invertible matrix F {\textstyle \mathbf {F} } . Its actual content will not be important.

Note:

The signal subspace is usually not computed from the measurement matrix Y {\textstyle \mathbf {Y} } . Instead, one may use the auto-correlation matrix.

R Y Y := 1 T t = 1 T y [ t ] y [ t ] = 1 T Y Y = 1 T U E E =: E U {\displaystyle {\begin{aligned}\mathbf {R} _{\mathrm {YY} }:=&{\tfrac {1}{T}}\sum _{t=1}^{T}\mathbf {y} [t]\mathbf {y} ^{*}[t]\\=&{\tfrac {1}{T}}\mathbf {Y} \mathbf {Y} ^{*}={\tfrac {1}{T}}\mathbf {U} \underbrace {\mathbf {E} \mathbf {E} ^{*}} _{=:\mathbf {E} '}\mathbf {U} ^{*}\end{aligned}}}
Hence, R Y Y {\textstyle \mathbf {R} _{\mathrm {YY} }} can be decomposed into signal subspace and noise subspace

R Y Y = 1 T U S E S U S + 1 T U N E N U N {\displaystyle \mathbf {R} _{\mathrm {YY} }={\tfrac {1}{T}}\mathbf {U} _{\mathrm {S} }\mathbf {E} _{\mathrm {S} }'\mathbf {U} _{\mathrm {S} }^{*}+{\tfrac {1}{T}}\mathbf {U} _{\mathrm {N} }\mathbf {E} _{\mathrm {N} }'\mathbf {U} _{\mathrm {N} }^{*}}

Putting the things together

These are the two basic properties that are known now:

U S = A F J 2 A = J 1 A H {\displaystyle {\begin{aligned}\mathbf {U} _{\mathrm {S} }&=\mathbf {A} \mathbf {F} &\mathbf {J} _{2}\mathbf {A} =\mathbf {J} _{1}\mathbf {A} \mathbf {H} \end{aligned}}}

Let us start with the equation on the right:

J 2 A = J 1 A H using: U S = A F J 2 U S F 1 = J 1 U S F 1 H F J 2 U S F 1 F I = J 1 U S F 1 H F J 2 U S = J 1 U S F 1 H F {\displaystyle {\begin{aligned}\mathbf {J} _{2}\mathbf {A} &=\mathbf {J} _{1}\mathbf {A} \mathbf {H} &&{\text{using:}}\quad \mathbf {U} _{\mathrm {S} }=\mathbf {A} \mathbf {F} \\\mathbf {J} _{2}\mathbf {U} _{\mathrm {S} }\mathbf {F} ^{-1}&=\mathbf {J} _{1}\mathbf {U} _{\mathrm {S} }\mathbf {F} ^{-1}\mathbf {H} &&\cdot \mathbf {F} \\\mathbf {J} _{2}\mathbf {U} _{\mathrm {S} }\underbrace {\mathbf {F} ^{-1}\mathbf {F} } _{\mathbf {I} }&=\mathbf {J} _{1}\mathbf {U} _{\mathrm {S} }\mathbf {F} ^{-1}\mathbf {H} \mathbf {F} \\\mathbf {J} _{2}\mathbf {U} _{\mathrm {S} }&=\mathbf {J} _{1}\mathbf {U} _{\mathrm {S} }\mathbf {F} ^{-1}\mathbf {H} \mathbf {F} \end{aligned}}}

Define these abbreviations for the truncated signal sub spaces:

S 1 := J 1 U S S 2 := J 2 U S {\displaystyle {\begin{aligned}\mathbf {S} _{1}&:=\mathbf {J} _{1}\mathbf {U} _{\mathrm {S} }&\mathbf {S} _{2}&:=\mathbf {J} _{2}\mathbf {U} _{\mathrm {S} }\end{aligned}}}
Moreover, define this matrix:
P := F 1 H F {\displaystyle {\begin{aligned}\mathbf {P} &:=\mathbf {F} ^{-1}\mathbf {H} \mathbf {F} \end{aligned}}}
Note that the left-hand side of the last equation has the form of an eigenvalue decomposition, where the eigenvalues are stored in the matrix H {\displaystyle \mathbf {H} } . As defined in some earlier section, H {\displaystyle \mathbf {H} } stores complex exponentials on its main diagonals. Their phases are the sought-after radial frequencies w 1 , w 2 , . . . w K {\displaystyle w_{1},w_{2},...w_{K}} .

Using these abbreviations, the following form is obtained:

S 2 = S 1 P {\displaystyle {\begin{aligned}\mathbf {S} _{2}&=\mathbf {S} _{1}\mathbf {P} \end{aligned}}}

The idea is now that, if we could compute P {\displaystyle \mathbf {P} } from this equation, we would be able to find the eigenvalues of P {\displaystyle \mathbf {P} } which in turn would give us the radial frequencies. However, S 1 {\displaystyle \mathbf {S} _{1}} is generally not invertible. For that, a least squares solution can be used

P = ( S 1 S 1 ) 1 S 1 S 2 {\displaystyle {\mathbf {P} }=(\mathbf {S} _{1}^{*}{\mathbf {S} _{1}})^{-1}\mathbf {S} _{1}^{*}{\mathbf {S} _{2}}}

Estimation of radial frequencies

The eigenvalues λ 1 , λ 2 , , λ K {\textstyle \lambda _{1},\lambda _{2},\ldots ,\lambda _{K}} of P are complex numbers:

λ k = α k e j ω k {\displaystyle \lambda _{k}=\alpha _{k}\mathrm {e} ^{j\omega _{k}}}
The estimated radial frequencies w 1 , w 2 , . . . w K {\displaystyle w_{1},w_{2},...w_{K}} are the phases (angles) of the eigenvalues λ 1 , λ 2 , , λ K {\textstyle \lambda _{1},\lambda _{2},\ldots ,\lambda _{K}} .

Algorithm summary

  1. Collect measurements y [ 1 ] , y [ 2 ] , , y [ T ] {\textstyle \mathbf {y} [1],\mathbf {y} [2],\ldots ,\mathbf {y} [T]} .
  2. If not already known: Estimate the number of input signals K {\textstyle K} .
  3. Compute auto-correlation matrix.
    R Y Y = 1 T t = 1 T y [ t ] y [ t ] {\displaystyle {\begin{aligned}\mathbf {R} _{\mathrm {YY} }={\tfrac {1}{T}}\sum _{t=1}^{T}\mathbf {y} [t]\mathbf {y} ^{*}[t]\\\end{aligned}}}
  4. Compute singular value decomposition (SVD) of R Y Y {\textstyle \mathbf {R} _{\mathrm {YY} }} and extract the signal subspace U S C M × K {\textstyle \mathbf {U} _{\mathrm {S} }\in \mathbb {C} ^{M\times K}} .
    R Y Y = 1 T U S E S U S + 1 T U N E N U N {\displaystyle \mathbf {R} _{\mathrm {YY} }={\tfrac {1}{T}}\mathbf {U} _{\mathrm {S} }\mathbf {E} _{\mathrm {S} }'\mathbf {U} _{\mathrm {S} }^{*}+{\tfrac {1}{T}}\mathbf {U} _{\mathrm {N} }\mathbf {E} _{\mathrm {N} }'\mathbf {U} _{\mathrm {N} }^{*}}
  5. Compute matrices S 1 {\textstyle \mathbf {S} _{\mathrm {1} }} and S 2 {\textstyle \mathbf {S} _{\mathrm {2} }} .
    S 1 := J 1 U S S 2 := J 2 U S {\displaystyle {\begin{aligned}\mathbf {S} _{1}&:=\mathbf {J} _{1}\mathbf {U} _{\mathrm {S} }&\mathbf {S} _{2}&:=\mathbf {J} _{2}\mathbf {U} _{\mathrm {S} }\end{aligned}}}
    where J 1 = [ I M 1 0 ] {\displaystyle \mathbf {J} _{1}=[\mathbf {I} _{M-1}\quad \mathbf {0} ]} and J 2 = [ 0 I M 1 ] {\displaystyle \mathbf {J} _{2}=[\mathbf {0} \quad \mathbf {I} _{M-1}]} .
  6. Solve the equation
    S 2 = S 1 P {\displaystyle {\begin{aligned}\mathbf {S} _{2}&=\mathbf {S} _{1}\mathbf {P} \end{aligned}}}
    for P {\textstyle \mathbf {P} } . An example would be the least squares solution:
    P = ( S 1 S 1 ) 1 S 1 S 2 {\displaystyle {\mathbf {P} }=(\mathbf {S} _{1}^{*}{\mathbf {S} _{1}})^{-1}\mathbf {S} _{1}^{*}{\mathbf {S} _{2}}}
    (Here, * denotes the Hermitian (conjugate) transpose.) An alternative would be the total least squares solution.
  7. Compute the eigenvalues λ 1 , λ 2 , , λ K {\textstyle \lambda _{1},\lambda _{2},\ldots ,\lambda _{K}} of P {\textstyle \mathbf {P} } .
  8. The phases of the eigenvalues λ k = α k e j ω k {\textstyle \lambda _{k}=\alpha _{k}\mathrm {e} ^{j\omega _{k}}} are the sought-after radial frequencies ω k {\textstyle \omega _{k}} .
    ω k = arg λ k {\displaystyle \omega _{k}=\arg \lambda _{k}}

Notes

Choice of selection matrices

In the derivation above, the selection matrices J 1 {\textstyle \mathbf {J} _{1}} and J 2 {\displaystyle \mathbf {J} _{2}} were used. For simplicity, they were defined as J 1 = [ I M 1 0 ] {\displaystyle \mathbf {J} _{1}=[\mathbf {I} _{M-1}\quad \mathbf {0} ]} and J 2 = [ 0 I M 1 ] {\displaystyle \mathbf {J} _{2}=[\mathbf {0} \quad \mathbf {I} _{M-1}]} . However, at no point during the derivation it was required that J 1 {\textstyle \mathbf {J} _{1}} and J 2 {\displaystyle \mathbf {J} _{2}} must be defined like this. Indeed, any appropriate matrices may be used as long as the rotational invariance

J 2 a ( w k ) = e j w k J 1 a ( w k ) {\displaystyle \mathbf {J} _{2}\mathbf {a} (w_{k})=e^{-jw_{k}}\mathbf {J} _{1}\mathbf {a} (w_{k})}
(or some generalization of it) is maintained. And accordingly, A 1 := J 1 A {\textstyle \mathbf {A} _{1}:=\mathbf {J} _{1}\mathbf {A} } and A 2 := J 2 A {\textstyle \mathbf {A} _{2}:=\mathbf {J} _{2}\mathbf {A} } may contain any rows of A {\textstyle \mathbf {A} } .

Generalized rotational invariance

The rotational invariance used in the derivation may be generalized. So far, the matrix H {\displaystyle \mathbf {H} } has been defined to be a diagonal matrix that stores the sought-after complex exponentials on its main diagonal. However, H {\displaystyle \mathbf {H} } may also exhibit some other structure.[3] For instance, it may be an upper triangular matrix. In this case, P := F 1 H F {\textstyle {\begin{aligned}\mathbf {P} &:=\mathbf {F} ^{-1}\mathbf {H} \mathbf {F} \end{aligned}}} constitutes a triangularization of P {\displaystyle \mathbf {P} } .

Algorithm example

A pseudocode is given below for the implementation of ESPRIT algorithm.

function esprit(y, model_order, number_of_sources):
    m = model_order
    n = number_of_sources
    create covariance matrix R, from the noisy measurements y. Size of R will be (m-by-m).
    compute the svd of R
    [U, E, V] = svd(R)
    
    obtain the orthonormal eigenvectors corresponding to the sources
    S = U(:, 1:n)                 
      
    split the orthonormal eigenvectors in two
    S1 = S(1:m-1, :) and S2 = S(2:m, :)
                                               
    compute P via LS (MATLAB's backslash operator)
    P = S1\S2 
       
    find the angles of the eigenvalues of P
    w = angle(eig(P)) / (2*pi*elspacing)
     doa=asind(w)      %return the doa angle by taking the arcsin in degrees 
    return 'doa

See also

References

  1. ^ Paulraj, A.; Roy, R.; Kailath, T. (1985), "Estimation Of Signal Parameters Via Rotational Invariance Techniques - Esprit", Nineteenth Asilomar Conference on Circuits, Systems and Computers, pp. 83–89, doi:10.1109/ACSSC.1985.671426, ISBN 978-0-8186-0729-5, S2CID 2293566
  2. ^ Volodymyr Vasylyshyn. The direction of arrival estimation using ESPRIT with sparse arrays.// Proc. 2009 European Radar Conference (EuRAD). – 30 Sept.-2 Oct. 2009. - Pp. 246 - 249. - [1]
  3. ^ Hu, Anzhong; Lv, Tiejun; Gao, Hui; Zhang, Zhang; Yang, Shaoshi (2014). "An ESPRIT-Based Approach for 2-D Localization of Incoherently Distributed Sources in Massive MIMO Systems". IEEE Journal of Selected Topics in Signal Processing. 8 (5): 996–1011. arXiv:1403.5352. Bibcode:2014ISTSP...8..996H. doi:10.1109/JSTSP.2014.2313409. ISSN 1932-4553. S2CID 11664051.

Further reading