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

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

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


5、ZC 序列循环互相关

如果不同根产生的 ZC 序列进行相关运算会发生什么情况呢?下面我们构造两个根为 11 和 7 并且长度 N = 67 的 ZC 序列。

seq1 = zadoffChuSeq(11,67);
seq2 = zadoffChuSeq(7,67);
corr = fftshift(fft(seq1)) .* conj(fftshift(fft(seq2)));
figure;
plot(abs(ifft(ifftshift(corr))));
xlabel('滞后索引');
ylabel('自相关');
title('ZC序列互相关');

两个不同根序列相关运算后的结果如下图:

N=67,u1=11,u2=7, ZC序列互相关函数

因此可得结论:若 N NN∣ u 1 − u 2 ∣ |u_1-u_2|u1u2 互质,则互相关函数 ∣ R u 1 u 2 ∣ = N |R_{u_1u_2}|=\sqrt{N}Ru1u2=N

我们从图上看出,对于不同根的序列再进行相关运算之后,不会产生像上面相同根的序列那样会产生又高又细的相关峰。

下面我们再构造两个根为 17 和 8 并且长度 N = 63 的 ZC 序列。

seq1 = zadoffChuSeq(17,63);
seq2 = zadoffChuSeq(8,63);
corr = fftshift(fft(seq1)) .* conj(fftshift(fft(seq2)));
figure;
plot(abs(ifft(ifftshift(corr))));
xlabel('滞后索引');
ylabel('自相关');
title('ZC序列互相关');

两个不同根序列相关运算后的结果如下图:

N=63,u1=17,u2=8, ZC序列互相关函数

因此可得结论:若 N 为奇数,假设 N NN∣ u 1 − u 2 ∣ |u_1-u_2|u1u2 有最大公约数 δ ≠ \delta \neqδ=,则互相关函数 ∣ R u 1 u 2 = δ N ∣ |R_{u_1u_2}=\sqrt{\delta N}|Ru1u2=δN

∣ R u 1 u 2 ∣ = { δ N n = k δ 0 n ≠ k δ , k = 1 , 2 , . . . , N δ |R_{u_1u_2}|=

{δN0n=kδnkδ{���=��0�≠��

,k=1,2,...,\frac{N}{\delta}Ru1u2={δN0n=kδn=kδ,k=1,2,...,δN

上面我们说过:对相同长度的两个 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 互质。

这里我们进行仿真证明一下:

tmp = [];
for i = 1: 10
  for j = (i+1) : 10
    if i < j
      Seqi = zadoffChuSeq(i,11); 
      Seqj = zadoffChuSeq(j,11); 
      cross_corr = abs(dot(Seqi, Seqj))/11;
      tmp = [tmp, cross_corr];
    end
  end
end
figure;
stem(tmp);

仿真图如下:

验证了我们上面所说的结论:两个序列的归一化循环互相关值正好等于 1 / N z c = 1 / 11 ≈ 0.3015 1/\sqrt{N_{zc}}=1/\sqrt{11}\approx0.30151/Nzc=1/110.3015

6、ZC 序列傅里叶变换

这里介绍一下对 ZC 序列做完傅里叶变换后,再去分析复平面散点图及循环自相关特性

seq1 = zadoffChuSeq(25,139);
fft_seq1 = fft(seq1);
figure;
scatter(real(fft_seq1), imag(fft_seq1));
xlabel('实部');
ylabel('虚部');
title('ZC序列fft后复平面表示');
corr = fftshift(fft(fft_seq1)) .* conj(fftshift(fft(fft_seq1)));
figure;
plot(abs(ifft(ifftshift(corr))));
xlabel('滞后索引');
ylabel('循环自相关');
title('ZC序列fft后自相关');
fft_seq2 = circshift(fft_seq1, 10); % 右移
corr = fftshift(fft(fft_seq2)) .* conj(fftshift(fft(fft_seq1)));
figure;
plot(abs(ifft(ifftshift(corr))));
xlabel('滞后索引');
ylabel('循环自相关');
title('ZC序列fft后循环自相关');

仿真结果如下:

从上图仿真可以看出,结果显而易见,经过傅里叶变换之后的序列仍然具有同样的特性。

7、ZC 序列低峰均比特性

seq_lengths = 1:500:9999; % 不同的序列长度
% 存储实部和虚部的峰均比值
real_part_PAPR_values = zeros(1, numel(seq_lengths));
imaginary_part_PAPR_values = zeros(1, numel(seq_lengths));
for i = 1:numel(seq_lengths)
    seq1 = zadoffChuSeq(1, seq_lengths(i)); % 生成不同长度的ZC序列
    % 计算实部的峰值功率和均值功率
    real_part = real(seq1);
    real_part_peak_power = max(abs(real_part))^2;
    real_part_average_power = mean(abs(real_part))^2;
    % 计算虚部的峰值功率和均值功率
    imaginary_part = imag(seq1);
    imaginary_part_peak_power = max(abs(imaginary_part))^2;
    imaginary_part_average_power = mean(abs(imaginary_part))^2;
    % 计算实部和虚部的峰均比
    real_part_PAPR = 10 * log10(real_part_peak_power / real_part_average_power);
    imaginary_part_PAPR = 10 * log10(imaginary_part_peak_power / imaginary_part_average_power);
    real_part_PAPR_values(i) = real_part_PAPR; % 存储实部的峰均比值
    imaginary_part_PAPR_values(i) = imaginary_part_PAPR; % 存储虚部的峰均比值
end
% 绘制实部峰均比图
subplot(2, 1, 1);
plot(seq_lengths, real_part_PAPR_values, '-o');
xlabel('序列长度');
ylabel('峰均比(dB)');
title('ZC序列实部峰均比');
grid on;
% 绘制虚部峰均比图
subplot(2, 1, 2);
plot(seq_lengths, imaginary_part_PAPR_values, '-o');
xlabel('序列长度');
ylabel('峰均比(dB)');
title('ZC序列虚部峰均比');
grid on;

仿真结果如下:

可以看到,ZC 序列峰均比较低,从而有利于射频功放信号发挥最大的效率。

参考文献:5GNR漫谈13:Zadoff –Chu(ZC)序列性质

目录
相关文章
|
机器学习/深度学习 移动开发 JavaScript
ZC序列理论学习及仿真(一)
ZC序列理论学习及仿真
2461 0
|
机器学习/深度学习 索引 Windows
OFDM原理及MATLAB仿真
OFDM原理及MATLAB仿真
797 2
|
调度 索引
NR PUCCH(四) UL data operation
UE 在connected mode 需要实时和网络进行上下行通信,在UE有UL data要发送但是没有UL grant时,就需要向网络端发送SR请求资源,网络收到SR就会在激活的BWP上发送 UL DCI给UE,UE 根据UL DCI 信息 获得UL grant ,然后在PUSCH对应的资源上就可以发送UL data给网络,最后网络端通过HARQ 过程指示是否有收到对应的data。这是UL data 的基本流程,下面通过实际log分别看下UL data operation的各个过程。
NR SRS(二)
上篇漏掉了SpatialRelationInfo,那就先看下SRS resource资源配置中的RS-SpatialRelationInfo,即SRS resource和参考信号的对应关系,代表波束的对应关系,具体在接下来的波束相关的内容再说。这里参考信号可以是下行SSB,CSI-RS或者是uplinkBWP指示的SRS,RRC层结构如下。
|
网络协议 5G 计算机视觉
随机接入 |带你读《5G 无线系统设计与国际标准》之十一
随机接入过程用于获得上行同步,完成随机接入过程之后,终端就可以与基站进行上行通信。与 LTE 类似,NR 支持基于竞争的随机接入及基于非竞争的随机接入。
随机接入 |带你读《5G 无线系统设计与国际标准》之十一
|
算法 数据安全/隐私保护
基于LS算法的OFDM+QPSK系统信道估计均衡matlab性能仿真
基于MATLAB 2022a的仿真展示了OFDM+QPSK系统中最小二乘(LS)算法的信道估计与均衡效果。OFDM利用多个低速率子载波提高频谱效率,通过循环前缀克服多径衰落。LS算法依据导频符号估计信道参数,进而设计均衡器以恢复数据符号。核心程序实现了OFDM信号处理流程,包括加性高斯白噪声的加入、保护间隔去除、快速傅立叶变换及信道估计与均衡等步骤,并最终计算误码率,验证了算法的有效性。
347 2
|
调度 索引
NR PUCCH(一) PUCCH format 0/1
NR中PUCCH物理信道用来发送上行控制信息Uplink Control Information(UCI),当然UCI也可以在PUSCH上发送。UCI 内容包括:CSI,HARQ ACK/NACK ,SR 及上述三者的组合信息。
|
数据可视化 Python
【Python】Python 仿真OFDM发射机、信道和接收机-实现多种调制方式
文章介绍了如何使用Python和Commpy工具包实现OFDM通信系统的仿真,包括发射机、信道和接收机的过程,并支持BPSK、QPSK、8PSK、16QAM、64QAM等多种调制方式,同时展示了导频插入、信道冲击响应、星座映射的可视化,并计算了系统的误比特率。
614 0
|
编解码
OFDM模糊函数仿真
OFDM模糊函数仿真
253 0