Zadoff-Chu sequence concept
Show older comments
Zaddoff-Chu sequence has two main propoerties: 1- constant modulus 2- good correlation characteristics. Most of the papers claim that the autocorrelation of sequence has zero values for all shifted version of sequence except the lag=0. However, if you try to use the matlab code zadoffChuSeq(u,N) to varify this propoerties, you will find the small peaks at time axis. This means it is not perfrectely sequqnce as they calimed. Did I miss somthing?
4 Comments
Manikanta Aditya
on 18 Apr 2024
Regarding the small peaks you’re seeing when using the MATLAB function zadoffChuSeq(u,N), it’s important to note that these could be due to numerical precision issues inherent in digital computation. Theoretically, the autocorrelation should be zero at all lags except zero, but in practice, due to finite numerical precision, you might not get exactly zero. This doesn’t mean that the sequence isn’t a Zadoff-Chu sequence, it’s just a manifestation of the limitations of numerical computations.
ahmed youssef
on 18 Apr 2024
Manikanta Aditya
on 18 Apr 2024
As, you’re observing very large peaks around the zero-lag peak with zadoffChuSeq(3,67), it might be worth double-checking the implementation of the function for any potential errors or deviations from the theoretical formula. Additionally, ensure that the parameters used (such as u and N) satisfy the necessary conditions for a Zadoff-Chu sequence.
If after verification everything seems correct, then these large peaks might be an artifact of how MATLAB handles computations and displays plots rather than an issue with the sequence itself.
The image you attached indeed shows a prominent peak near x=60 and several smaller peaks throughout the plot. These peaks could be due to the reasons mentioned above.
ahmed youssef
on 18 Apr 2024
Edited: ahmed youssef
on 18 Apr 2024
Answers (1)
The Zadoff-Chu sequences have the useful property of having zero cyclic autocorrelation at all nonzero lags. One fast way to check this property is shown below
N = 67;
x = zadoffChuSeq(3,N);
X = fft(x);
cR = fftshift(ifft(X.*conj(X))); % circular correlation
figure
plot((-(N-1)/2:(N-1)/2),abs(cR))
xlabel("Lag")
ylabel("Autocorreleation")
5 Comments
ahmed youssef
on 18 Apr 2024
Note the difference between circularly shifting a signal and linear shift. ZC sequence maintains the autocorrelation property if they are circularly shifted.
So in your code if you try y = circshift(x,i)
in the for loop, and plot the circular correlation, you should see the peak with no side lobes. The sidelobes (sinc-like) appear when you truncate your signal.
N = 67;
x = zadoffChuSeq(3,N);
X = fft(x);
del = 10;
for i = del-1:-1:0
y = circshift(x,i); % circularly shifted signal
Y = fft(y);
cR = fftshift(ifft(X.*conj(Y))); % circular correlation
hold("on")
plot((-(N-1)/2:(N-1)/2),abs(cR))
end
xlabel("Lag")
ylabel("Autocorreleation")
In practical scenarios, like synchronization in comms, we usually use xcorr (linear autocorrelation) while keeping in mind that there are sidelobes but the delay estimator is an asymptotically consistent estimator.
ahmed youssef
on 18 Apr 2024
AH
on 18 Apr 2024
Note that the delx is no longer a ZC sequence.
ahmed youssef
on 18 Apr 2024
Categories
Find more on Descriptive Statistics in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


