In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-03-28 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >
Share
Shulou(Shulou.com)06/03 Report--
This article mainly explains "how to use Python to understand the CAZAC sequence used for signal synchronization". The content of the article is simple and clear, and it is easy to learn and understand. Please follow the editor's train of thought to study and learn "how to use Python to understand the CAZAC sequence for signal synchronization". Synchronization is a very critical process in wireless communication systems, which is of great significance to the correct transmission of signals. Usually, we usually use CAZAC sequence (Const Amplitude Zero Auto-Corelation) for frame synchronization, and CAZAC sequence is called constant envelope zero autocorrelation sequence. It mainly includes ZC sequence, Frank sequence, Golomb polyphase sequence, Chirp sequence and so on. Because of its good autocorrelation, it is widely used in the field of wireless communication, such as radar, CDMA, LTE, 5G NR and so on.
Next we take the ZC sequence as an example, using Python drawing to intuitively understand this sequence.
The full name of ZC sequence is Zadoff Chu sequence. Since it was proposed by Zadoff and Chu, it is named after them. It can be expressed by the following formula:
The u in the equation is its root.
According to the formula of ZC sequence, we can easily draw the figure of ZC sequence, without saying much, we can just play the code.
U = 1N = 128n = np.arange (N) x = np.exp (- 1J * np.pi*u*n* (Numb1) / (NMUI 1)) plt.subplot (2Min 1) plt.plot (np.real (x)) plt.subplot (2 Min 1) plt.plot (np.imag (x)) plt.show ()
Here, the root of the sequence is taken from 1 N to 128, such as the following figure is its time domain graph, do you think the above figure seems to have some regularity.
ZC sequence
So, what's so special about it? We can look at the sequence from a different point of view, and let's draw it in a complex coordinate system to see what it looks like.
U = 1N = 128n = np.arange (N) x = np.exp (- 1J * np.pi*u*n* (NMUI 1) / (NMUI 1)) plt.scatter (np.real (x), np.imag (x)) plt.show ()
In the graph, the Abscissa is the real part I and the ordinate is the imaginary part Q. from the graph, we can see that the sequence is a circle on the complex plane, that is to say, its amplitude is constant.
ZC sequence in complex coordinate system
From the formula of the sequence, it is a complex exponential function based on e, so we can understand it according to the previous article "talking about Euler formula and complex exponential signal".
What happens if you correlate the two sequences? The correlation operation is actually the convolution operation, in order to facilitate the calculation, we first transfer the sequence to the frequency domain for calculation, because the convolution operation in the time domain is actually multiplied in the frequency domain, as follows:
Fourier transform in time domain:
The formula can be sorted out:
Derivation is always a bunch of big formulas, but there have long been bosses to sum it up for us, here we need to remember the convolution theorem.
The convolution theorem in time domain means that the convolution in time domain corresponds to the product in frequency domain; the convolution theorem in frequency domain means that the convolution in frequency domain corresponds to the product in time domain.
Let's continue to look at the following code, we first shift the sequence 10 bits to the right to generate a new sequence, and then use the shifted sequence to correlate with the original sequence.
U = 1N = 128n = np.arange (N) x = np.exp (- 1J * np.pi*u*n* (Numb1) / (NMUI 1)) corr = np.fft.fftshift (np.fft.fft (x)) * np.conj (np.fft.fftshift (np.fft.fft (x) plt.subplot (2m 1m 1) plt.plot (np.abs (np.fft.ifftshift (np.fft.ifft (corr) x Zirr = np.roll (x 10) # move corr = np.fft.fftshift (np.fft.fft (np.fft.ifft (x) * np.conj (np.fft.fftshift (np.fft.fft (x) plt.subplot (2) plt.plot (np.fft.ifftshift (np.fft.ifft (corr) plt.show ()
From the figure below, it can be found that a correlation peak will be generated after the correlation operation, and the value of the correlation peak is very large, and its energy is more concentrated and has better anti-noise ability. except for the correlation peak, the correlation values of other positions are 0 or close to 0. Moreover, after the correlation operation between the shifted sequence and the original sequence, the position of the coherent peak will be shifted 10 bits to the right. Because of this related feature, it should also be clear why this sequence can be used for frame synchronization.
Correlation operation
What will be the characteristics of the sequence after the Fourier transform?
U = 1N = 128n = np.arange (N) x = np.exp (- 1J * np.pi*u*n* (Numb1) / (NMUI 1)) fft_shift = np.fft.fft (x) plt.subplot (2Min 1) plt.plot (np.real (fft_shift)) plt.subplot (2Min 2 Min 2) plt.plot (np.imag (fft_shift)) plt.subplot (2M 2PM 3) plt.scatter (np.real (fft_shift)) Np.imag (fft_shift)) fft_shift_r = np.roll (fft_shift, 10) # move to the right corr = np.fft.fftshift (np.fft.fft (fft_shift_r)) * np.conj (np.fft.fftshift (np.fft.fft (fft_shift) plt.subplot (2) plt.plot (np.abs (np.fft.ifftshift (np.fft.ifft (corr) plt.show ()
As can be seen from the following figure, it is obvious that the sequence after Fourier transform still has the same characteristics.
Fourier transform
What happens if the ZC sequences generated by different roots perform correlation operations? Let's construct two ZC sequences with roots 1 and 2.
U1 = 1U2 = 2N = 128n = np.arange (N) x1 = np.exp (- 1J * np.pi*u1*n* (Numb1) / (Nmelo1)) x2 = np.exp (- 1J * np.pi*u2*n* (Numb1) / (NMU1)) corr = np.fft.fftshift (np.fft.fft (x2)) * np.conj (np.fft.fftshift (np.fft.fft (x1) plt.plot (np.abs (np)) .abs (np.fft.ifftshift (np.fft.ifft (corr) plt.show ()
The result of the correlation operation of two different root sequences is as follows:
Correlation operation of different root sequences
We can see from the figure that after the correlation operation for the sequence of different roots, it will not produce high and fine correlation peaks like the sequence with the same root above.
Thank you for your reading, the above is the content of "how to use Python to understand the CAZAC sequence used for signal synchronization". After the study of this article, I believe you have a deeper understanding of how to use Python to understand the CAZAC sequence used for signal synchronization. Here is, the editor will push for you more related knowledge points of the article, welcome to follow!
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.