There are set of complementary sequences known as Golay sequences that are used for channel estimation because of the nice property they have which is that the sum of the autocorrelation function of each gives dirac function.
For example, these are two complementary sequences
$$Ga=[+1, +1, +1, −1, +1, +1, −1, +1]$$ $$Gb=[+1, +1, +1, −1, −1, −1, +1, −1]$$
$$R_a(i)+R_b(i) = \delta(i)$$
Due to this nice correlation property, they are used in digital communication for as known pilot sequences for channel estimation of wireless channel. For example assume the channel we want to estimate is $h(t)$ then sending $Ga$ and $Gb$ over channel first and then performing correlation at receiver with Ga and Gb provides a good estimate of channel.
$$(h(t)*Ga)*Ga + (h(t)*Gb)*Gb =h(t)*(R_a+R_b)= h(t) \delta(t)$$
In theory, this is easy to understand. However I am trying to implement a more realistic setup in MATLAB.
If $G_a$ and $G_b$ are 10 chip in length with have a chip time of $T_c=0.57 ns$ and the channel is a 2 tap with delay spread of the channel is $T_{delay}=2.7 ns$. And assume we have Additive White Gaussian noise. My aim to estimate the channel. Below is my code.
channel =[1 0.2]';
Ga=[+1, +1, +1, -1, +1, +1, -1, +1]';
Gb=[+1, +1, +1, -1, -1, -1, +1, -1]';
y1=conv(channel,Ga);
y2=conv(channel,Gb);
r1=awgn(y1,10);
y2=awgn(y2,10);
hac1 = dsp.Autocorrelator;
correlation_output1=step(hac1,Ga);
correlation_output2=step(hac1,Gb);
channel_estimation=correlation_output1+ correlation_output2;
As you can tell, I have not included the delay spread $T_{delay}$ neither the chip rate $T_c$. Can anyone help me understand how I can incorporate such in my MATLAB code?