**Q: Can you list all the properties of the carrier-smoothing filter?**

**A:** Carrier-smoothing filters, also known as Hatch filters, are commonly used to reduce (“smooth”) the noise and multipath errors in pseudorange measurements by exploiting the high-precision relative distance information from carrier phase measurements. However, carrier-smoothing filters operate on more than just noise and multipath, and this article summarizes the response of such filters to all relevant inputs.

**Q: Can you list all the properties of the carrier-smoothing filter?**

**A:** Carrier-smoothing filters, also known as Hatch filters, are commonly used to reduce (“smooth”) the noise and multipath errors in pseudorange measurements by exploiting the high-precision relative distance information from carrier phase measurements. However, carrier-smoothing filters operate on more than just noise and multipath, and this article summarizes the response of such filters to all relevant inputs.

The GNSS carrier-smoothing filter is governed by the following finite difference equation

**Equation (1) ***(see inset photo, above right, for article equations)*

for *n*>0 where *r _{sm}*[

*n*] is the filter output at the

*n*-th epoch, whereas

*r*[

_{c}*n*] and

*r*[

_{p}*n*] are the code and phase pseudoranges, respectively. For the initial condition when

*n*= 0,

*r*[

_{sm}*n*]=

*r*[

_{c}*n*].

In this article we will analyze the case in which parameter *M*, which relates to the bandwidth of the filter (larger *M* gives more smoothing), is constant. **Figure 1** *(for all figures and tables, please see the photo at the top of this article) *shows a block diagram of the carrier-smoothing system. We use the following fundamental signals: the impulse signal *δ*[*n*]=1 for *n* = 0 and 0 for *n* ≠ 0, and the step signal *u*[*n*]=1 for *n* ≥ 0 and 0 for *n* < 0. The output of the block with transfer function *z*^{-1} is *x*[*n*-1] when the input is *x*[*n*].

Taking into account the main errors, the code pseudorange can be written as

*r _{c}*[

*n*] =

*r*[

*n*] +

*c*[

_{S}*n*] +

*c*[

_{R}*n*] +

*T*[

*n*] +

*I*[

*n*] +

*w*[

_{c}*n*]

**(2)**

where *r*[*n*] is the true range between the satellite and the GNSS receiver, *c _{S}*[

*n*] is the error due to the bias of the satellite clock,

*c*[

_{R}*n*] is the error due to the bias of the receiver clock,

*T*[

*n*] is the error due to the troposphere delay,

*I*[

*n*] is the error due to the ionosphere delay,

*w*[

_{c}*n*] is the noise due to the receiver DLL (delay locked loop) jitter due to thermal noise and noise-like multipath. All the quantities are measured in meters.

The phase pseudorange can be written as

*r _{p}*[

*n*] =

*r*[

*n*] +

*c*[

_{S}*n*] +

*c*[

_{R}*n*] +

*T*[

*n*] +

*I*[

*n*] +

*N*[

*n*]

*λ*+

*w*[

_{p}*n*]

**(3)**

where *N*[*n*] is the integer ambiguity, *λ* is the wavelength, and *w _{p}*[

*n*] is the noise due to the receiver PLL (phase locked loop) jitter plus the effect of multipath. The integer ambiguity should be constant

*N*[

*n*]=

*N*

_{0}during the satellite visibility, but we consider here that cycle slips may occur and therefore the integer ambiguity becomes a time-varying signal.

In general, the product of the carrier wavelength and the integer ambiguity, *λN*[*n*], can be written as

**Equation (4)**

where *n _{k}* > 0 is the discrete-time at which the

*k*-th cycle slip event occurs,

*d*the number of cycles in the slip (integer, positive or negative),

_{k}*N*is the number of cycle slip events in the observation time. Parameter

_{c.s.}*N*

_{0}is the value of

*N*[

*n*] at

*n*= 0, which can be set equal to zero, since it cancels out in (1) for

*n*>0.

Both pseudoranges have a common term *s*[*n*] = *r*[*n*] + *c _{s}*[

*n*] +

*c*[

_{R}*n*] +

*T*[

*n*]. They also have the term

*I*[

*n*] with opposite sign, and each one has its own noise component (

*w*[

_{p}*n*] and

*w*[

_{c}*n*]), which are statistically independent.

In the following sections, we analyze the outputs of the carrier-smoothing system when one and only one of the various components is present. The total system output is then given by the sum of all the individual outputs, thanks to the system’s linearity.

Tables 1–3 list all the relevant formulas and figures. Transfer functions are identified as *H _{x}*(

*z*) (

*z*complex number), impulse responses as

*h*[

_{x}*n*] (

*n*integer), step responses as

*u*[

_{x}*n*] where

*x*specifies the considered component. In the tables, H

*(*

_{x}*f*) is defined as H

*(*

_{x}*f*) =

*H*(

_{x}*e*

^{j}^{2πf}) where

*f*is the normalized frequency; the true frequency is

*f´*=

*f / T*(in hertz) where

*T*is the time interval between two subsequent epochs.

**Common Component**

For the common signal *s*[*n*], the system has just one input and one output, as shown in **Figure 2**. In this case we can evaluate the transfer function in the z-domain, as the cascade of two subsystems. The first subsystem is a finite impulse response (FIR) filter with transfer function:

**Equation (5)**

The second subsystem is instead an infinite impulse response (IIR) filter with the following transfer function

**Equation (6)**

and thus, the transfer function and impulse response of the entire system with input *s*[*n*] are, respectively,

*H _{s}*(

*z*) =

*H*(

_{FIR}*z*)

*H*(

_{IIR}*z*) =1,

*h*[

_{s}*n*] =

*δ*[

*n*]

**(7)**

as also reported in (20) and (21) of Table 1. Thus, we have *r _{sm,s}*[

*n*] =

*s*[

*n*] *

*h*[

_{s}*n*] =

*s*[

*n*], which means that the true range, the troposphere delay, and the terms due to the clock bias are present without alterations at the output of the filter.

**Initial Condition**

The initial condition can be interpreted as an impulse *r _{c}*[0]

*δ*[

*n*] which enters the low-pass IIR filter and provides the output

*r*[

_{sm,i.c.}*n*] =

*r*[0]

_{c}*h*[

_{i.c.}*n*], where

*h*[

_{i.c.}*n*] and its plots for

*M*=30 and 100 are reported in Table 2: equation (28) and the figure at its right. We can see that a long transient exists, which has theoretically an infinite duration but can be quantified through the partial energy

*E*[

_{i.c.}*n*]. It is possible to show that

**Equation (8)**

with *E _{i.c.}* being the total energy of

*h*[

_{i.c.}*n*] for

*n*→ ∞. The impulse response reaches 98 percent of its total energy after approximately 2

*M*samples. We can therefore state that, according to the 98 percent criterion, the transient ends at the discrete time 2

*M*.

**Cycle Slip**

Let us consider the effects of just one cycle slip event, i.e., *λN*[*n*] = *λd*_{0}*u*[*n – n*_{0}] in (4). The transfer function *H _{c.s.}*(

*z*) of the system with input

*λN*[

*n*] and output

*r*[

_{sm,c.s}*n*] is given in (29) of Table 2. The response to

*λd*

_{0}

*u*[

*n – n*

_{0}] is the inverse z-transform of

*R*[

_{sm,c.s}*z*] =

*H*(

_{c.s}*z*)

*λd*

_{0}

*z*

^{-n}^{0}/ (1-

*z*

^{-1}).

**Equation (9)**

The figure on the right of (31) in Table 2 shows the step response for *M*=30 and 100: as *M* increases, the coefficient gets closer to 1, and the duration of *r _{sm,c.s}*[

*n*] increases. Using the 98 percent criterion, the transient is over 2M samples after the occurrence of the cycle slip.

**Ionosphere Component**

The analysis of the ionosphere component can be performed using the block diagram of **Figure 3**. In this case, the first filter has transfer function

**Equation (10)**

while the second filter is again the same IIR filter of Figure 2 described by equation (6).

Therefore, the transfer function for the ionosphere component *I*[*n*] is *H _{ion}*

_{o}(

*z*) =

*H*

_{FIR,ion}_{o}(

*z*)

*H*(

_{IIR}*z*), given in (22) of

**Table 1**. Equation (25) in Table 1 gives the corresponding impulse response

*h*[

_{iono}*n*], with plots for

*M*=30 and 100 on its right. Then the carrier-smoothing filter output due to the ionosphere can be written as

*r _{sm}*

_{,I}[

*n*] =

*I*[

*n*]*

*h*[

_{iono}*n*]

**(11)**

which unfortunately does not provide much information; so, some approximations are necessary. Filter *H _{ion}*

_{o}(

*z*) has a zero, (

*M*-1)/(

*M*-2), and a pole, (

*M*-1)/

*M*, very close to each other. The system then tends to behave as an all-pass filter, as shown in the figure on the right of (23) in Table 1, where the modulus of the transfer function

**H**

_{ion}_{o}(

*f*) =

*H*

_{ion}_{o}(exp(

*j*2

*πf*)) is plotted versus the normalized frequency

*f*. The group delay of the system is defined as

**Equation (12)**

where* φ _{iono}*(

*f*) is the phase of

**H**

_{ion}_{o}(

*f*), shown in the figure on the right of (24) in Table 1. We can show that, for small values of

*f*,

**Equation (13)**

having defined *a*=(*M*-1)/(*M*-2) and *b*=(*M*-1)/*M*.

In nominal conditions, the ionosphere component *I*[*n*] changes slowly, which means that its bandwidth is very small, and we can approximate the transfer function in the frequency domain as

**H**_{ion}_{o}(*f*) ⋍ *M _{iono}* exp[−

*j*2

*πτ*]

_{i}f where *M _{iono}* = 1 is the magnitude of

**H**

_{ion}_{o}(

*f*) at

*f*= 0, and

*τ*is the group delay

_{i}*θ*at

_{iono}(f)*f*= 0:

**Equation (14)**

Then, for a sufficiently slow ionosphere component *I*[*n*], the output of the carrier-smoothing filter is approximately equal to *r _{sm,I}*[

*n*]

*I*[

*n*– 2(

*M*-1)] with a delay

*τ*= 2(

_{i}*M*-1), which decreases as

*M*decreases.

**Noise Components**

A discrete-time white Gaussian noise process *w _{in}*[

*n*], with zero mean and variance

*σ*

_{w}

^{2}, which enters a filter with impulse response

*h*[

*n*], generates an output process

*w*[

_{out}*n*] that is no longer white, but still Gaussian, with zero mean and with variance

**Equation (15)**

**Code Pseudorange Noise. **Code pseudorange noise generates an output process *r _{sm,c.n.}*[

*n*] which is obtained by using

*w*[

_{c}*n*] as input of the filter with impulse response

*h*[

_{c}*n*]=

*h*. Using (15) and the total energy (obtained from (8) for

_{IIR}[n]/M*n*→ ∞) we get the output variance

*σ*

^{2}

*:*

_{c,out} **Equation (16)**

where *σ*_{c}^{2} is the variance of *w _{c}*[

*n*]. The figure on the right of (32) in Table 3 shows how

*σ*

^{2}

*decreases to zero as*

_{c,out}*M*increases. This is the “smoothing” aspect of the filter.

**Phase Pseudorange Noise.** Phase pseudorange noise generates an output process *r _{sm,p.n.}*[

*n*] which is obtained by using

*w*[

_{p}*n*] as input of the filter with impulse response

*h*[

_{p}*n*] = (

*M*-1){

*h*[

_{IIR}*n*]-

*h*[

_{IIR}*n*-1]/

*M*}, which can be written as follows:

**Equation (17)**

where *σ*_{p}^{2} is the variance of *w _{p}*[

*n*]. The figure on the right of (33) in Table 3 shows how

*σ*

^{2}

_{p,out}increases with

*M*with an asymptotic value equal to

*σ*

_{p}

^{2}, which means that the system tends to behave as an all-pass filter as

*M*increases (although since

*σ*

_{p}is typically much smaller than

*σ*

_{c}, this is not a major concern).

**Summary of the Results**

In the presence of all the errors, the signal at the output of the carrier-smoothing filter is then

*r _{sm}*[

*n*] =

*s*[

*n*] +

*r*[

_{sm,i.c}*n*] +

*r*

_{sm,c.s}_{.}[

*n*] +

*r*[

_{sm,c.n.}*n*] +

*r*[

_{sm,p.s}*n*] +

*r*[

_{sm,I}*n*]

**(18)**

Table 1 lists the results valid for the common and ionosphere components *s*[*n*] and *I*[*n*]. **Table 2** refers to effects due to the initial condition and the cycle slips. **Table 3** summarizes the results obtained for the noise and multipath inputs *w _{c}*[

*n*] and

*w*[

_{p}*n*].

On the one hand, we see that larger values of *M* decrease the output noise variance due to code pseudorange, but on the other hand these larger values increase the duration of transients in the presence of cycle slips; so, a compromise must be found. The total noise variance at the output of the carrier-smoothing filter is

**Equation (19)**

With this value of M, the noise variance at the output of the smoothing filter is equal to 2*σ*_{p}^{2} and the transient durations are reasonably short. However, if cycle slips are frequent, then transients are the dominating error and *M* should be chosen, taking into consideration the probability and magnitude of undetectable cycle slips.