clc;
clear;
%generate_gf(1,2^m);
%%————————————————运算前13个元素代码function alpha_to=generate_gf(m,n) %任意m,n通用
m=12; %当m=12,n=3860;
n=3860;
alpha_to=zeros(1,2^m);
mask=1;
alpha_to(m+1)=0;
Pp=primpoly(m); %注意高低端掉个个儿
for i=1:m
alpha_to(i)=mask;
if (Pp(i)~=0)
alpha_to(m+1)=bitxor(alpha_to(m+1),mask);
end;
mask=mask*2;
end;
mask=alpha_to(m);
%%———————————————运算剩余的元素代码
for i=m+2:n
if (alpha_to(i-1)>=mask)
alpha_to(i)=bitxor(alpha_to(m+1),bitxor(alpha_to(i-1),mask)*2);
else
alpha_to(i)=alpha_to(i-1)*2;
end;
end;
alpha_to(2^m)=0; %把元素0放在最后一位。
% 第二个文件primpoly.m
function Pp=primpoly(m)
if m==2
Pp=[1,1,1];
elseif m==3
Pp=[1,1,0,1];
elseif m==4
Pp=[1,1,0,0,1];
elseif m==5
Pp=[1,0,1,0,0,1];
elseif m==6
Pp=[1,1,0,0,0,0,1];
elseif m==7
Pp=[1,0,0,1,0,0,0,1];
elseif m==8
Pp=[1,0,1,1,1,0,0,0,1];
elseif m==9
Pp=[1,0,0,0,1,0,0,0,0,1];
elseif m==10
Pp=[1,0,0,1,0,0,0,0,0,0,1];
elseif m==11
Pp=[1,0,1,0,0,0,0,0,0,0,0,1];
elseif m==12
Pp=[1,0,0,0,0,0,1,0,1,0,0,1,1]; %高低端调换
% Pp=[1,1,0,0,1,0,1,0,0,0,0,0,1]; %m=12实际本原多项式
elseif m==13
Pp=[1,1,0,1,1,0,0,0,0,0,0,0,0,1];
elseif m==14
Pp=[1,1,0,0,0,0,1,0,0,0,1,0,0,0,1];
elseif m==15
Pp=[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1];
elseif m==16
Pp=[1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1];
end;
%%%%%%%%可以检验运行结果
Columns 1 through 5
1 2 4 8 16
Columns 6 through 10
32 64 128 256 512
Columns 11 through 15
1024 2048 2369 3011 3783
Columns 16 through 20
1231 2462 2685 3515 567
.........................