ZC序列理论学习及仿真(一)https://developer.aliyun.com/article/1472381
②、复平面散点图
对应的复平面上的散点图见下图,为单位圆:
③、模值
对应的模值如下图,恒定为 1
2、ZC 序列循环移位
在对某一个 ZC 序列进行循环移位时,可使用 MATLAB 自带 circshift()
函数
语法:
Y = circshift(A,K) Y = circshift(A,K,dim)
说明:
- Y = circshift(A,K) 循环将 A 中的元素平移 K 个位置。如果 K 为整数,则 circshift 沿大小不等于 1 的第一个 A 维度进行平移。如果 K 为整数向量,则每个 K 元素指示 A 的对应维度中的平移量。
- Y = circshift(A,K,dim) 循环将 A 中的值沿维度 dim 平移 K 个位置。输入 K 和 dim 必须为标量。
生成长度为 11,根序列号为 1 的 Zadoff-Chu 序列,循环移位长度为 3
Seq1 = zadoffChuSeq(1,11); Seq2 = circshift(Seq1,3);
仿真运行时打断点可以看到原 Seq1 和移位后的 Seq2
3、ZC 序列自相关函数
我们还是使用上面生成长度为 139,根序列号为 25 的 Zadoff-Chu 序列,绘制 ZC 序列的自相关函数
seq = zadoffChuSeq(25,139); [r,lags] = xcorr(seq); plot(lags, abs(r)); xlabel('滞后索引'); ylabel('自相关'); title('ZC序列自相关');
仿真结果如下:
可以看到 ZC 序列具有集中的主瓣。
自相关的结果为 2N-1 个点,即 2 * 139 - 1 = 277 个点,关于 N=139 对称(这里从 -138 开始,因此关于 0 对称)。
有关 MATLAB 中自相关函数可以参考这个博客:一个例子学会自相关互相关的计算
4、ZC 序列循环自相关
seq1 = zadoffChuSeq(25,139); corr = fftshift(fft(seq1)) .* conj(fftshift(fft(seq1))); subplot(2,1,1); plot(abs(ifft(ifftshift(corr)))); xlabel('滞后索引'); ylabel('自相关'); title('ZC序列自相关'); seq2 = circshift(seq1, 10); % 循环移位 10 corr = fftshift(fft(seq2)) .* conj(fftshift(fft(seq1))); subplot(2,1,2); plot(abs(ifft(ifftshift(corr)))); xlabel('滞后索引'); ylabel('循环自相关'); title('ZC序列循环自相关');
仿真结果如下:
从仿真结果可以看出,ZC 序列具有良好的循环自相关特性且自相关峰值尖锐,对于任意 ZC 序列与其循环移位 a 位后的序列互不相关 a ≠ 0 a\neq 0a=0;
从图中可以看到 ZC 序列循环移位后,原序列和移位后的相关峰值出现在移位大小的位置。
由此可得下面结论:
ZC 序列循环移位 N 后,原序列只与移位后的序列得良好的相关峰值且峰值在N处,其它位置的相关峰值为 0,这也是 preamble 检测的理论依据。
ZC序列理论学习及仿真(三)https://developer.aliyun.com/article/1472384