ZC序列理论学习及仿真(一)

简介: ZC序列理论学习及仿真

前言

ZC 序列和 m 序列是数字通信中常用的两种序列,在编码和解码过程中起到重要的作用。本文作为 ZC 序列学习笔记,主要研究 ZC 序列的一些性质,并通过 MATLAB 对其进行仿真验证。


一、ZC 序列理论

1、基本概念

ZC 序列(Zadoff-Chu 序列)是一种具有良好性质的离散序列,它是一种复数序列,在通信系统中广泛应用。它由 Zadoff 和 Chu 于 1964 年提出,是一种特殊的线性调频脉冲压缩序列。ZC 序列常用于通信系统中的同步和信道估计等方面。

  • ZC 序列的自相关性是指序列与其自身进行相关运算后的结果。自相关性能够体现序列的周期性和重复性,对于同步和信道估计非常重要。
  • ZC 序列的互相关性是指序列与其他序列进行相关运算后的结果。互相关性能够体现序列之间的相似程度,对于信道估计和多用户检测等方面有着重要作用。

ZC 序列常用于各种无线通信系统中,如 LTE(Long Term Evolution)、WiMAX(Worldwide Interoperability for Microwave Access)、GNSS(Global Navigation Satellite System)等。它们被广泛应用于信号处理和通信领域,以提高系统性能和可靠性。

2、表达式

ZC 序列常用于随机接入(Random Access)中以生成 preamble 序列,其表达式如下图所示:

ZC 序列有两个重要的参数:

  • 根索引(root index):对应上图中物理根序列号 u uuu uu 是由逻辑根序列号查表获取;
  • ZC 序列的长度:对应上图中根序列长度 L R A L_{RA}LRA,一定得是奇数(常常是质数);

对于任意 ZC 序列,在长度 L R A L_{RA}LRA 和根序列 u uu 的取值确定的情况下,便可确定根序列 i ii

注意到:每个 ZC 序列的长度为 L R A L_{RA}LRA,而ZC序列的序列空间大小为 L R A − 1 L_{RA}-1LRA1,即一共有 L R A − 1 L_{RA}-1LRA1 个 ZC 序列。

我们可以发现,ZC 序列的值是一个复数,由欧拉公式 e j α = c o s ( α ) + j s i n ( α ) e^{j\alpha}=cos(\alpha)+jsin(\alpha)ejα=cos(α)+jsin(α),即可得到该复数的实部和虚部,除此之外,还可以发现它的幅值恒为 1,其实在复数坐标系中,它都是在单位圆上。

3、ZC 序列一些定义

①、自相关

离散时间序列的自相关函数定义为:

R n = ∑ n = − ∞ ∞ x [ k ] x ∗ [ k + n ] R_{n}= \sum\limits_{n=-\infty}^{\infty}x[k]x^{*}[k+n]Rn=n=x[k]x[k+n]

  • x [ k ] x[k]x[k] 为调制序列;
  • x ∗ [ k + n ] x^{*}[k+n]x[k+n]x [ k ] x[k]x[k] 时延信号的共轭。

②、循环移位

一个长度为 N NN 的有限长序列 x [ n ] x[n]x[n],其 m 次循环移位公式如下:

x m [ n ] = x [ ( n + m )   m o d   N ] , m = 0 , 1 , 2 , . . . , N − 1 x^{m}[n]=x[(n+m)\ mod\ N],m=0,1,2,...,N-1xm[n]=x[(n+m) mod N]m=0,1,2,...,N1

一共有 N NN 个循环移位序列(包括本身)。

③、循环自相关

循环自相关也叫周期自相关,长度为 N NN 的有限长序列 x [ n ] x[n]x[n] 的序列循环自相关公式为:

R 0 = ∑ n = 0 N − 1 x [ n ] x ∗ [ n ] R_{0}=\sum^{N-1}_{n=0}x[n]x^{*}[n]R0=n=0N1x[n]x[n]

归一化的循环自相关公式为:

R ‾ x x [ τ ] = 1 N R x x [ τ ] \overline{R}_{xx}[\tau]=\frac{1}{N}R_{xx}[\tau]Rxx[τ]=N1Rxx[τ]

显而易见,R ‾ x x [ 0 ] = 1 , R ‾ x x [ τ ≠ 0 ] ≤ 1 \overline{R}_{xx}[0]=1,\overline{R}_{xx}[\tau \neq0]\le1Rxx[0]=1Rxx[τ=0]1

④、循环互相关

循环互相关也叫周期互相关,给定长度为 N NN 的两个有限长序列 x [ n ] x[n]x[n]y [ n ] y[n]y[n],它们的循环互相关公式为:

R x y = ∑ n = 0 N − 1 x [ n ] y ∗ [ n ] R_{xy}=\sum^{N-1}_{n=0}x[n]y^{*}[n]Rxy=n=0N1x[n]y[n]

类似地,我们可以定义归一化的循环互相关公式为:

R ‾ x y [ τ ] = 1 N R x y [ τ ] \overline{R}_{xy}[\tau]=\frac{1}{N}R_{xy}[\tau]Rxy[τ]=N1Rxy[τ]

一般地,我们把 R ‾ x y [ 0 ] \overline{R}_{xy}[0]Rxy[0] 称为两个序列的互相关。

二、ZC 序列性质

1、性质 1:恒包络,即等模

任意长度的 ZC 序列幅值恒定,这也意味着功率恒定,这个好处就是射频器件不用忽大忽小的改变放大能量。为什么能够恒包络?看 ZC 序列的生成表达可以看到,本质就是一个底数为 e 的指数序列,每一个序列值代表单位圆上的一个点。每一个点值,仅是改变相位而已。复指数是一个二维 I、Q 的平面图。

u = 10 u=10u=10L R A = 839 L_{RA} = 839LRA=839,绘制的复平面图形如下:

2、性质 2:零循环自相关

一个 ZC 序列的循环自相关是最优的,因为对于所有的非零移位序列,与原序列的自相关都等于 0

ZC 序列循环移位 N,如果 N 不等于 ZC 序列的长度(N 等于序列长度,循环移位后回到起始点了),则移位后的序列和原序列不相关。啥意思?就是说虽然本是同根生,但是只要屁股挪了一下,哪怕是挪一位,那长得一点都不像没有挪前的样子。这个性质有什么好处?假如没挪前的序列表示一个 UE,挪位后的序列表示另一个 UE,那么基站用根序列与接收到的序列一相关运算,就知道有几个 UE 在向他打报告申请资源了。至于“相关”运算,可以理解为查看两条序列长得“像不像”的工具,长得“像”,相关峰值就又直又高耸入云,长得不“像”,相关峰值就软绵绵趴在地上。

ZC 序列循环移位后,原序列和移位后的相关峰值出现在移位大小的位置。

3、性质 3:固定循环互相关

对相同长度的两个 ZC 序列,即一个序列的 root index 为 q 1 q_1q1,另一个序列的 root index 为 q 2 q_2q2,且 q 1 ≠ q 2 q_1\neq q_2q1=q2,那么两个序列的归一化循环互相关值正好等于 1 / N z c 1/\sqrt{N_{zc}}1/Nzc,这里一般假设 N z c N_{zc}Nzc 是质数,或者更一般地,认为 ∣ q 1 − q 2 ∣ |q_1-q_2|q1q2N z c N_{zc}Nzc 互质。

4、其他性质

①、傅里叶变换后仍是 ZC 序列

这个性质,简直就是为 OFDM 系统量身打造,也省去多少运算量。既可以在时域相关,也可以在频域相关,灵活决定姿势,怎么方便怎么来。

OFDM 本质是多个并行的子载波采用正交 IQ 调制,然后相加在一起,以单个子载波对应的时间周期T,离散化后,刚好是一个离散逆傅立叶变换IFFT,这是 OFDM 调制采用 IFFT 变换的本质。

②、低峰均比

对于发端,ZC 序列峰均比低(ZC 序列时频域都是 ZC 序列,且幅值恒定),有利于射频功放信号发挥最大的效率。

对于信道估计,ZC 序列幅值恒定,其图形可看作一个单位圆。

序列长度对序列的影响:ZC 序列越长,序列间的互相关性越差。在做多用户 RA 时,序列间的互相关性越差,某一序列对其他序列造成的干扰越小,从而提高序列检测的正确率。因此,ZC序列越长,检测性能越好

③、序列间的正交性

  • 相同 root index 的两个 ZC 序列彼此正交;
  • 不同 root index 的两个 ZC 序列由于其彼此互相关性非零,因此不再具有正交性;

三、MATLAB 仿真

1、ZC 序列生成

MATLAB 上已经有函数专门产生 ZC 序列的函数:zadoffChuSeq

注:zadoffChuSeq 用在 R2019a 版本及以后,之前的版本使用 lteZadoffChuSeq 函数,这两个函数只是名字发生了变化。

使用方法:

seq = zadoffChuSeq(R,N)   % 生成长度为 N 的第 R 根的 Zadoff-Chu 序列 

例如我们生成长度为 139,根序列号为 25 的 Zadoff-Chu 序列,并输出序列的离散复数点、绘制复平面散点图及模值:

seq = zadoffChuSeq(25, 139);
disp(seq);
figure;
scatter(real(seq), imag(seq), 'filled');
xlabel('Real Part');
ylabel('Imaginary Part');
title('Complex Plot of seq');
figure;
plot(abs(seq));
xlabel('Sample Index');
ylabel('Magnitude');
title('Magnitude of seq');

仿真结果如下:

①、复数点

生成的输出序列的离散复数点如下:

1.0000 + 0.0000i
   0.4266 - 0.9044i
  -0.9693 + 0.2461i
   0.8789 - 0.4770i
   0.3004 + 0.9538i
  -0.3219 + 0.9468i
   0.1687 + 0.9857i
   0.9746 - 0.2241i
  -0.9875 - 0.1576i
   0.8323 - 0.5544i
   0.7788 + 0.6273i
   0.6869 + 0.7268i
   0.9837 - 0.1798i
  -0.6702 - 0.7421i
   0.7497 + 0.6618i
  -0.8679 + 0.4967i
  -0.9693 - 0.2461i
  -0.9936 + 0.1128i
   0.0339 + 0.9994i
   0.4670 - 0.8842i
   0.1240 + 0.9923i
  -0.9571 + 0.2896i
  -0.9997 + 0.0226i
  -0.6360 + 0.7717i
   0.9634 + 0.2679i
  -0.9571 - 0.2896i
   0.6869 - 0.7268i
   0.9959 + 0.0903i
   0.9908 - 0.1352i
   0.0790 - 0.9969i
  -0.6702 + 0.7421i
   0.2570 - 0.9664i
   0.9746 + 0.2241i
   0.8064 + 0.5914i
   0.9959 - 0.0903i
  -0.3643 - 0.9313i
   0.2131 + 0.9770i
  -0.9271 - 0.3748i
  -0.1464 - 0.9892i
  -0.2351 - 0.9720i
  -0.9936 - 0.1128i
   0.6184 + 0.7858i
  -0.8446 - 0.5354i
   0.6184 - 0.7858i
   0.9353 - 0.3538i
   0.5823 - 0.8130i
  -0.8895 - 0.4570i
   0.7190 + 0.6950i
  -0.9977 + 0.0678i
  -0.4469 - 0.8946i
  -0.4060 - 0.9139i
  -0.9977 - 0.0678i
   0.5450 + 0.8385i
  -0.7031 - 0.7111i
   0.8565 - 0.5162i
   0.9908 + 0.1352i
   0.9504 - 0.3112i
  -0.3219 - 0.9468i
  -0.1015 + 0.9948i
  -0.5638 - 0.8259i
   0.6533 - 0.7571i
   0.7788 - 0.6273i
  -0.0565 - 0.9984i
  -0.8446 + 0.5354i
   0.8064 - 0.5914i
   0.2570 + 0.9664i
  -0.5259 + 0.8506i
  -0.2351 + 0.9720i
   0.9353 + 0.3538i
  -0.6005 - 0.7996i
   0.9353 + 0.3538i
  -0.2351 + 0.9720i
  -0.5259 + 0.8506i
   0.2570 + 0.9664i
   0.8064 - 0.5914i
  -0.8446 + 0.5354i
  -0.0565 - 0.9984i
   0.7788 - 0.6273i
   0.6533 - 0.7571i
  -0.5638 - 0.8259i
  -0.1015 + 0.9948i
  -0.3219 - 0.9468i
   0.9504 - 0.3112i
   0.9908 + 0.1352i
   0.8565 - 0.5162i
  -0.7031 - 0.7111i
   0.5450 + 0.8385i
  -0.9977 - 0.0678i
  -0.4060 - 0.9139i
  -0.4469 - 0.8946i
  -0.9977 + 0.0678i
   0.7190 + 0.6950i
  -0.8895 - 0.4570i
   0.5823 - 0.8130i
   0.9353 - 0.3538i
   0.6184 - 0.7858i
  -0.8446 - 0.5354i
   0.6184 + 0.7858i
  -0.9936 - 0.1128i
  -0.2351 - 0.9720i
  -0.1464 - 0.9892i
  -0.9271 - 0.3748i
   0.2131 + 0.9770i
  -0.3643 - 0.9313i
   0.9959 - 0.0903i
   0.8064 + 0.5914i
   0.9746 + 0.2241i
   0.2570 - 0.9664i
  -0.6702 + 0.7421i
   0.0790 - 0.9969i
   0.9908 - 0.1352i
   0.9959 + 0.0903i
   0.6869 - 0.7268i
  -0.9571 - 0.2896i
   0.9634 + 0.2679i
  -0.6360 + 0.7717i
  -0.9997 + 0.0226i
  -0.9571 + 0.2896i
   0.1240 + 0.9923i
   0.4670 - 0.8842i
   0.0339 + 0.9994i
  -0.9936 + 0.1128i
  -0.9693 - 0.2461i
  -0.8679 + 0.4967i
   0.7497 + 0.6618i
  -0.6702 - 0.7421i
   0.9837 - 0.1798i
   0.6869 + 0.7268i
   0.7788 + 0.6273i
   0.8323 - 0.5544i
  -0.9875 - 0.1576i
   0.9746 - 0.2241i
   0.1687 + 0.9857i
  -0.3219 + 0.9468i
   0.3004 + 0.9538i
   0.8789 - 0.4770i
  -0.9693 + 0.2461i
   0.4266 - 0.9044i
   1.0000 - 0.0000i


ZC序列理论学习及仿真(二)https://developer.aliyun.com/article/1472382

目录
相关文章
|
9月前
|
机器学习/深度学习 传感器 算法
matlab改进鲸鱼算法GSWOA 基准函数对比与检验
matlab改进鲸鱼算法GSWOA 基准函数对比与检验
|
30天前
|
机器学习/深度学习
ZC序列理论学习及仿真(三)
ZC序列理论学习及仿真
77 0
|
30天前
ZC序列理论学习及仿真(二)
ZC序列理论学习及仿真
86 0
|
9月前
|
算法 计算机视觉
基于方向编码的模板匹配算法matlab仿真
基于方向编码的模板匹配算法matlab仿真
|
11月前
构建直接序列扩频系统模型(Matlab代码实现)
构建直接序列扩频系统模型(Matlab代码实现)
307 0
|
30天前
|
算法 计算机视觉
基于WTMM算法的图像多重分形谱计算matlab仿真
基于WTMM算法的图像多重分形谱计算matlab仿真
|
30天前
|
数据采集 算法 前端开发
【MATLAB】 稳健的经验模式分解REMD信号分解算法
【MATLAB】 稳健的经验模式分解REMD信号分解算法
74 0
|
10月前
|
存储 算法 调度
Matlab+Yalmip两阶段鲁棒优化通用编程指南
主要包含8大内容: ①.拿到一个复杂的两阶段鲁棒优化问题的分析步骤和方法。 ②.采用Yalmip工具箱中的uncertain函数和鲁棒优化模块求解两阶段鲁棒优化的子问题。 ③.Yalmip工具箱中的鲁棒优化模块和常规的求解思路有什么异同。 ④.使用KKT条件求解两阶段鲁棒优化的子问题。 ⑤.使用对偶变换求解两阶段鲁棒优化的子问题。 ⑥.采用Yalmip工具箱的内置函数,将线性约束写成紧凑矩阵形式的方法。 ⑦.矩阵形式的两阶段鲁棒优化问题,如何快速写出子问题内层优化的KKT条件。 ⑧.矩阵形式的两阶段鲁棒优化问题,如何快速写出子问题内层优化的对偶问题。
|
11月前
双层优化入门(1)—基本原理与求解方法(附matlab代码)
双层优化问题(Bilevel Programming Problems),也被称为双层规划,最早由Stackelberg与1934年在经济学相关研究中提出,因此也被称为Stackelberg问题。双层规划问题一般具有层次性、独立性、冲突性、优先性和自主性等特点。 本文介绍了双层优化的原理与求解方法,并提供了相应的matlab代码供参考学习。
|
11月前
|
机器学习/深度学习 存储 算法
【MATLAB第31期】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理回归问题MATLAB代码实现(持续更新)
【MATLAB第31期】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理回归问题MATLAB代码实现(持续更新)

热门文章

最新文章