📄 ch7example24func.m
字号:
% ch7example24func.m
function diff_of_1_0=ch7example24func()
reg1=[1 0 0 0 0 0 0 0 0 0 0]; % 寄存器初态从低到高位a_(n-r),..., a_(n-1)
coeff1=[1 0 0 0 0 0 0 0 0 1 0 1]; % 抽头系数cr,...,c0,取决于特征多项式:4005
coeff2=[1 1 1 0 1 1 0 1 1 1 0 1]; % 抽头系数cr cr-1 ...c0 :7335
diff_of_1_0(2^11)=0; % 1和0个数差值存储数组初始化
for L=1:(2^11-1)
reg2=decinttobin(L,11); % 寄存器组2的状态
gold=gld_seq_gen(reg1,coeff1,reg2,coeff2);
num_of_1=sum(gold); % 统计其中1的个数
num_of_0=sum(1-gold); % 统计其中0的个数
diff_of_1_0(L)=num_of_1-num_of_0;% 返回1和0个数差值
end
banlanceGoldNum=sum(diff_of_1_0==1) % 计算并显示1和0个数差值
Num65=sum(diff_of_1_0==65)
NumNeg63=sum(diff_of_1_0==-63)
% 以下是本函数内部使用的子函数:m 序列、Gold 序列和进制转换
% m 序列计算函数
function m=m_seq_gen(reg,coeff)
for k=1:(2^length(reg)-1) % 计算一个周期的m序列输出
a_n=mod(sum(reg.*coeff(1:length(coeff)-1)),2);% 反馈
m(k)=reg(1); % 寄存器最低位输出
reg=[reg(2:length(reg)),a_n]; % 寄存器移位,反馈
end
% Gold 序列计算函数
function g=gld_seq_gen(reg1,coeff1,reg2,coeff2)
m1=m_seq_gen(reg1,coeff1); % 第一个m序列
m2=m_seq_gen(reg2,coeff2); % 第二个m序列
g=mod(m1+m2,2); % 模二加得到Gold序列
% 进制转换函数
function binvec=decinttobin(x,d) % 将十进制整数转换为二进制数存放在矩阵中
% d 为指定的转换二进制位数
for k=0:d-1
binvec(d-k)=rem(x,2);
x=floor(x/2);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -