LTE SSS产生过程中z序列的介绍和MATLAB以及C语言实现
参考3GPP 36.211 6.11章节
接上期介绍完LTE SSS产生过程中加扰序列c的产生和代码实现,本期介绍一下LTE SSS产生过程中加扰序列z的原理和MATLAB以及C语言的实现。
SSS产生过程中用到的加扰Z1序列有两个,一个是
另一个是
两个序列是由一个m序列z移位而来的,如下:
而
m0和m1跟小区的N_ID_1有关,如下
matlab实现:
function [z] = gen_z1(m)
%
%
%
%
% coding time 2024.09.23
offset = 1;
x = zeros(1,32);
x(4+offset) = 1;
for n=0:25
x(n+5+offset) = mod(x(n+4+offset) + x(n+2+offset)+ x(n+1+offset)+ x(n+offset),2);
end
z = zeros(1,31);
for n=0:30
z(n+offset) = x(mod(n+mod(m,8),31)++offset);
end
z = 1-2.*z;
C语言实现:
void lte_sss_gen_z(char *c,unsigned char m) //m is m0 or m1
{
int i;
unsigned char x[32] = {0};
x[4] = 1;
for(i = 0; i < 25; i++)
{
x[i+5] = (x[i+4] + x[i+2] + x[i+1] + x[i]) & 0x01;
}
for(i = 0; i < 31; i++)
{
c[i] = 1 - 2*x[(i+(m&7))%31];
}
}