扩频通信实验报告
附 录
(1)%抽取m序列,确定m序列的个数 clc; clear; s=0; r=5; N=2^r-1;
%%%%%%求q可取值的个数 for i=1:N-1
b=gcd(i,N); if b==1 s=s+1; else end end m=1; mm=1; i=1;
%%%%2产生第一组m序列,以q=1开头 for n=1:r
A(m,n)=i; i=mod(2*i,N); end for i=2:N b=gcd(i,N);
if b==1 %%%%如果与N互质,则进行分组 c=0; for mm=1:m for n=1:r
if i==A(mm,n) c=1;
%如果新取的数与之前已确定的数是重复的,则跳出
break; else c=0; end end if c==1 break; end end
if c==0 m=m+1;
%%%%新取数与之前已确定的数无重复,则作为新一行第一位
for n=1:r A(m,n)=i; i=mod(2*i,N); end end end end
disp (A) %%%%以矩阵形式输出分组后的数 C=min(A',[],1); %%%%求出矩阵每行最小值 disp(C) pp=0; qq=0; flag=0; k=(N-1)/2;
%%%%依次寻找本原多项式对应的反多项式 for m=1:s/r flag=0; for i=1:25 for n=1:r
q=mod(A(m,n)+i*N,k); if q==0
qq=(A(m,n)+i*N)/k; pp=A(m,1); %%显示互反多项式
fprintf('%d-%d\\n',pp,qq ) flag=1;
%%%只要找到反多项式,则跳出 break; end end if flag==1 break; end end
(2)%产生m序列的函数:produce_m_seq function [m_seq]=produce_m_seq(ini)
30
扩频通信实验报告
len=length(ini);%移位寄存器的长度,本实验r=5 L=2^len-1;%m序列周期,本实验为31位 regi=[1,zeros(1,len-1)];%初始寄存器内容10000 m_seq6=produce_m_seq(ini6); fprintf('NO.%d is \\n ',6); fprintf('%d ',m_seq6); m_seq(1)=regi(1); for i=2:L
newregi (