任意阶平衡gold码的产生及其互相关性(代码)_第1页
任意阶平衡gold码的产生及其互相关性(代码)_第2页
任意阶平衡gold码的产生及其互相关性(代码)_第3页
任意阶平衡gold码的产生及其互相关性(代码)_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、clear all;n=input(请输入移位寄存器的级数n,n是大于等于2的整数,且n不能为4的倍数,为4的倍数不保证结果正确: );%五级移位%N=2n-1;%周期为N%x=gfprimfd(n,all);%产生级数为n的本原多项式%row,column=size(x);if(n=2)%n为2是不能用下面求y的公式,作为特例直接写入% y=1,1;end if(n2)y=x(1:row,2:column);%本来是nXn矩阵,第一列都是1,不要了,现在是nX(n-1)矩阵%endm=zeros(row,N);%求出所有m序列%for r=1:row%从1到第row行% register7=

2、zeros(1,n-1),1;%寄存器7,表示移位寄存器的初态除了最后一位,其余全0% m(r,1)=register7(n);%m(r,1)是的第r行第一列的取值% for i=2:1:N%从2到N,连续取值% register8(1)=mod(sum(y(r,:).*register7),2);%移位寄存器的向量与反馈系数的向量点乘后,新向量的所有数模二加,得到一个数作为寄存器8的第一位% for j=2:1:n%从2到N,连续取值% register8(j)=register7(j-1);%确定后n-1位% end register7=register8;%保存移位寄存器现在的值到reg

3、ister1% m(r,i)=register7(n);%输出的书,从第2位开始% end %现在得到了第r行的m序列%end %现在得到了第1到第r行的m序列% if(n2)%列出m1最大行数,超过会报错% fprintf(m序列的行数小于等于%1.0f,row)%显示之后要输入m1的要求%endif(n=2)%列出m1最大行数,超过会报错% fprintf(m序列的行数小于等于1)%显示之后要输入m1的要求%end fprintf(n)%换行%pass=1;%判断m1序列是否有优选对,若有,pass在下面循环中置0%while(pass=1) %若m1没有优选对,则循环% nom1=inp

4、ut(请从矩阵y中选出你所要m1序列本愿多项式的行数: );%输入一个数赋给nom1,number of m1,即m1的行数% m1=m(nom1,:);%得到了你指定的m1序列% rm=zeros(1,2n-1);%两个m序列的互相关性,用来判断m优选对% s=zeros(1,2n-1);%m优选对中移位后相同数的个数% d=zeros(1,2n-1);%m优选对中移位后相同数的个数% register2=zeros(1,2n-1);%寄存器2,用以验证m序列优选对时移位% cmatch=0;%counter match优选对匹配的数量% match=zeros(1,N);%匹配优选对所在的

5、行数% matchs=zeros(1,N);%match sequence匹配优选对的序列% for k=1:row%对m序列每一行循环% m2=m(k,:);%把m序列的第k行赋给m2% register1=m2;%寄存器1,用以验证m序列优选对时移位% for i=1:2n-1 A=mod(m1+register1),2);%移位加N次% for j=1:2n-1%逐位判断m1与m2是否相同,判断N次% if A(j)=0%若第j位位相同% s(i)=s(i)+1;%相同数加1,之后清零% end d(i)=N-s(i);%不同数减一,因为是s(i)的因变量,不用清0% end rm(i)

6、=s(i)-d(i);%rm是互相关函数,因为是s(i)和d(i)的因变量,不用清0% s(i)=0;%必须清0,不然k的循环序列就会叠加% register2(1)=register1(N);%以下三行为循环右移% register1(2:N)=register1(1:N-1); register1(1)=register2(1); end maxrm=max(abs(rm);%maxrm为互相关值的最大绝对值,因为是rm的因变量,所以不用清0% if(mod(n,2)=1)%对2除n求余,判断n的奇偶性% if(maxrm=2(n+1)/2)+1)%奇数判断互相关最大绝对值是否满足书上条件

7、437% cmatch=cmatch+1;%匹配(即互为优选对)个数加1% match(1,cmatch)=k;%匹配行数写入match序列中% matchs(cmatch,:)=m2;%匹配序列写入matchs矩阵中% end end if(mod(n,2)=0)%同上% if(maxrm=2(n+2)/2)+1)%偶数判断互相关最大绝对值是否满足书上条件437% cmatch=cmatch+1; match(1,cmatch)=k; matchs(cmatch,:)=m2; end end end if(cmatch=0)%若m1有优选对,cmatch不等于0% pass=0;%pass置

8、0,while不在循环% end if(cmatch=0)%若m1没有优选对,cmatch等于0% fprintf(m1没有优选对,请重新选择m1行数)%输出括号中的数% fprintf(n)%换行% end end fprintf(下列数字表示与m1互为优选对的m序列的行数)%输出括号中的数%match(1:cmatch)%因为后面没加分号,执行程序时会显示match序列的第1到第camtch列%choice=input(是否依次显示m1的优选对y/n:,s);%按括号中文字内容从键盘输入一个置%if(choice=y)%输入y执行,输入其他任何数不执行% matchs%matchs,mat

9、ch sequence,表示m1的所有优选对%endnom2=input(请从矩阵y中选出你所要m2序列的行数: );%同中文%m2=m(nom2,:);%得到m2,用优选对m1,m2,生成下面的gold序列,并选出平衡gold序列%gold=zeros(N+2,N);%一共N+2个gold序列,每个周期为N,设(N+2)*2的矩阵%register3=m2;%给寄存器3赋值m2,下面循环右移要用%register4=zeros(1,N);%给寄存器4设置成1xN的矩阵,下面循环右移要用%for i=1:N%循环N次% gold(i,:)=mod(m1+register3),2);%两m序列逐

10、位模二加% register4(1)=register3(N);%下面三行为循环右移% register3(2:N)=register3(1:N-1); register3(1)=register4(1);end;gold(N+1,:)=m1;%m序列包含生成它的2个m序列%gold(N+2,:)=m2;c1=zeros(1,N+2);%代表1的个数counter 1%c0=zeros(1,N+2);%代表0的个数counter 2%cbg=0;%代表平衡gold序列的个数counter balence gold%bg=zeros(1,N);%代表平衡gold序列%for i=1:N+2%开始找,要找N+2行% for j=1:N%弄出来一个全1的向量,长度为N,命名为judge函数 judge(1,j)=0; end s2=mod(gold(i,:)+judge),2);%s2是一个gold序列与全1序列模二加得到的序列% for k=1:N %看有多少个1% if s2(k)=1 c1(i)=c1(i)+1; end end for k=1:N %有多少个0% if s2(k)=0 c0(i)=c0(i)+1; en

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论