scramble_code.m

来自「扰码的产生MATLAB程序。用于移动通信等领域的扩频加扰」· M 代码 · 共 52 行

M
52
字号
function[out]=scramble_code(code_num);
%产生S2短扰码,长度为1~256,code_num为1~16777215的数。
n=zeros(1,24);
bin=de2bi(code_num);
n(1:length(bin))=bin;
%形成序列a,长度为255;
a(1)=mod(2*n(1)+1,4);
for i=2:8,
    a(i)=mod(2*n(i),4);
end;
for i=9:255,
    a(i)=mod(3*a(i-3)+a(i-5)+3*a(i-6)+2*a(i-7)+3*a(i-8),4);
end;
%形成序列b,长度为255
for i=1:8,
    b(i)=mod(n(i+8),2);
end;
for i=9:255,
    b(i)=mod(b(i-1)+b(i-3)+b(i-7)+b(i-8),2);
end;
%形成序列d,长度为255
for i=1:8,
    d(i)=mod(n(16+i),2);
end;
for i=9:255,
    d(i)=mod(d(i-1)+d(i-3)+d(i-4)+d(i-8),2);
end;
%形成序列z=a+2b+2d,长度为256;
for i=1:255,
    z(i)=mod(a(i)+2*b(i)+2*d(i),4);
end;
z(256)=z(1);
%映射为s1,s2,
for i=1:256,
    if z(i)==0,
        s1(i)=1;s2(i)=1;
    elseif z(i)==1,
        s1(i)=-1;s2(i)=1;
    elseif z(i)==2,
        s1(i)=-1;s2(i)=-1;
    else
        s1(i)=1;s2(i)=-1;
    end;
end;
%最后输出复数;
for i=1:256,
    if (mod(i,2)~=0),
        out(i)=( s1(i)+sqrt(-1)*(-1)^(i-1)*s2(i) )/sqrt(2);  %2003年4月23日加/sqrt(2);
    else
        out(i)=( s1(i)+sqrt(-1)*(-1)^(i-1)*s2(i-1) )/sqrt(2);
    end;
end;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?