?? scramble_code.m
字號:
function[out]=scramble_code(code_num);
%產(chǎn)生S2短擾碼,長度為1~256,code_num為1~16777215的數(shù)。
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;
%最后輸出復(fù)數(shù);
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;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -