📄 scramble_code.m
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -