课程学习——CDMA扩频实验

代码:

function dscdmamodem(user,snr_in_dbs)
%建立模型:用户信息,snr_in_dbs为信噪比
 %设置初始参数
user=[0 1 0 1 1 0 1] ;
close all
 %定义步长变量%
length_user=length(user);  
 %改变用户数据中的0为-1
for i=1:length_user  
    if user(i)==0
        user(i)=-1;
    end
end

% 用户传输前设置  
fc=3;     % 载频
eb=2;     % 每个字符的能量
tb=1;     % 每个信息比特所占的时间

%用户输入的数据信息
t=0.01:0.01:tb*length_user; 
basebandsig=[];
for i=1:length_user
    for j=0.01:0.01:tb
          if user(i)==1
              basebandsig=[basebandsig 1];
          else 
              basebandsig=[basebandsig -1];
          end
    end
end
figure
plot(basebandsig)
axis([0 100*length_user -1.5 1.5]);
title('用户输入的信息') 

% 用户的BPSK调制过程 
bpskmod=[];
for i=1:length_user
    for j=0.01:0.01:tb
     bpskmod=[bpskmod sqrt(2*eb)*user(i)*cos(2*pi*fc*j)];
 end
end
length(bpskmod)
%用户BPSK调制后的波形图输出
figure
 plot(bpskmod)
 axis([0 100*length_user -3 3]);
 title(' 用户经BPSK调制之后的波形 ')
% 扩频 
%PN码发生器
seed=[1 -1  1 -1];  % 设PN码初始值为1000
spreadspectrum=[];
pn=[];
for i=1:length_user
    for j=1:10  %PN码和数据比特码的比率设为10:1
        pn=[pn seed(4)];  
        if seed (4)==seed(3) temp=-1;
          else temp=1;
          end
              seed(4)=seed(3);
              seed(3)=seed(2);
              seed(2)=seed(1);
              seed(1)=temp;
    end
spreadspectrum=[spreadspectrum user(i)*pn];
end
%扩频过程
pnupsampled=[];
len_pn=length(pn);
for i=1:len_pn
    for j=0.1:0.1:tb
          if pn(i)==1 
              pnupsampled=[pnupsampled 1];
          else 
              pnupsampled=[pnupsampled -1];
          end
    end
end
length_pnupsampled=length(pnupsampled);
 sigtx=bpskmod.*pnupsampled;
  %扩频码波形输出
 figure
plot(pnupsampled)
 axis([0 100*length_user -2 2])
title(' PN码波形图 ')
%扩频后的波形图输出
 figure
plot(sigtx)
axis([0 100*length_user -3 3]);
title(' 用PN码扩频后的波形图 ')

composite_signal=sigtx;
%高斯白噪声信道传输
snr_in_dbs=20 %设信噪比为20
composite_signal=awgn(composite_signal,snr_in_dbs);  

%从信道中解扩出用户的信息
rx=composite_signal.*pnupsampled;
figure
plot(rx)
title('用户解扩后的波形')

% BPSK解调过程 
demodcar=[];
for i=1:length_user
    for j=0.01:0.01:tb
     demodcar=[demodcar sqrt(2*eb)*cos(2*pi*fc*j)];
 end
end
bpskdemod=rx.*demodcar;
figure
plot(bpskdemod)
title('用户经BPSK解调之后的波形')
len_dmod=length(bpskdemod);
sum=zeros(1,len_dmod/100);
for i=1:len_dmod/100
    for j=(i-1)*100+1:i*100
        sum(i)=sum(i)+bpskdemod(j);
    end
end

%检波过程  
 rxbits=[];
 for i=1:length_user
    if sum(i)>0
        rxbits=[rxbits 1];
    else
        rxbits=[rxbits 0];
    end
 end
 length_rxbits=length(rxbits);  
 
t=0.01:0.01:tb*length_rxbits; 
savbandsig=[];
for i=1:length_rxbits
    for j=0.01:0.01:tb
          if user(i)==1
              savbandsig=[savbandsig 1];
          else 
              savbandsig=[savbandsig -1];
          end
    end
end
figure
plot(savbandsig)
axis([0 100*length_user -2 2]);
title('用户经检波之后的波形 ’)

少年不被楼层误,余生不羁尽自由。
加油,加油!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值