⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 goldlow.m

📁 2个用户下的Rake接收机 4径-5径多径 AWGN一级瑞利衰落信道 混合了m序列、Gold序列
💻 M
字号:
%Gold序列产生器
%L=15,31,63,127
function [codes]=GoldLow(L,Numcodes)
n=log2(L+1);
if n==4
    f=[1,0,0,1;1,1,0,0];%2*4%生成多项式系数
elseif n==5
    f=[1,0,0,1,0;1,1,1,1,0;1,1,0,1,1;1,0,1,0,0;1,0,1,1,1;1,1,1,0,1];%6*5
elseif n==6
    f=[1,0,0,0,0,1;1,1,0,0,1,1;1,0,1,1,0,1;...
        1,1,0,0,0,0;1,1,1,0,0,1;1,1,0,1,1,0;];%6*6
elseif n==7
    f=[1,1,0,0,1,0,1;1,1,1,0,1,1,1;1,0,0,0,0,0,1;1,0,1,0,0,1,1;...
        1,1,1,0,0,1,0;1,1,1,1,0,1,1;1,1,0,0,0,0,0;1,1,0,1,0,0,1];%8*7
else
    display('error!L is an invalid number');
    return;
end
fsize=size(f);%size(a)是求对应a的维数
nrow=fsize(1);
m=ones(nrow,L+n-1);
for i=1:L-1
    mf=m(:,i:i+n-1);
    m(:,i+n)=diag(rem(mf*f',2));%rem中元素都除以2的余数,最后取矩阵的对角线元素
end
pairs=(nrow-1)*nrow/2;
Sumcodes=pairs*L+nrow;
if Numcodes>Sumcodes
    display('error!The needed number of codes is too large.Propose to increase L');
    return
end
c=zeros(Numcodes,L);
Sum=0;
for ii=1:nrow-1
    for jj=ii+1:nrow
        for j=1:L
            Sum=Sum+1;
            c(Sum,:)=m(ii,1:L)+periodshift(m(jj,1:L),0,j-1);
            if Sum==Numcodes
                c=rem(c,2);
                codes=2*c(1:Numcodes,:)-1;
                break
            end
            if Sum==Numcodes break;end
        end
        if Sum==Numcodes break;end
    end
    if Sum<Numcodes
        c(Sumcodes-nrow+1:Sumcodes,:)=m(:,1:L);
        c=rem(c,2);
        codes=2*c(1:Numcodes,:)-1;
    end
    codes=codes'
    %CDMA扩频码生成器
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -