《MATLAB源程序设计.pdf》由会员分享,可在线阅读,更多相关《MATLAB源程序设计.pdf(8页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、MATLAB 源程序设计用户信息0101101BPSK 调制扩频PN 码用户信息检波BPSK 解调解扩PN 码由图 5-21 直序扩频通信系统仿真框图可知,系统主要组成分为七个部分,分别为信源部分、扩频部分、调制部分、信道传输部分、解调部分、解扩部分和信宿部分。信源部分:用户把要传输的信息给定,用户输入的信息 0101101。调制部分:采用的是 BPSK 调制,数据进行调制然后输送出其调制之后的波形。调制后的传输信道选用的是高斯白噪声信道,信噪比可任意设定,在本次仿真中信噪比设定为 20。扩频部分:数据要进行扩频处理。这里选用的是利用 PN 码与输入的信号进行扩频,扩频后等待送入信道。PN 码
2、的产生是由一个 PN 码发生器来完成的。PN码发生器如图 5-22 所示。在信道的接收端进行的过程和输入端刚好是相反的。首先进行解调,也是选择 BPSK 的解调。图5-21直接序列扩频通信系统框图D1初始值1D2D3D4010图 5-22PN 码发生器然后是解扩,解扩时使用的 PN 码和扩频时使用的一致。这样才能保证解扩出相应的信息。整个仿真过程共设置了八个波形观测设备,运行后可以从这八个波形图中较直观的看到 DS-CDMA 系统的每一个调制过程。在两个用户的信息中我们给定的是0和1的信息,为了在调制和扩频中容易计算,将数据中的 0 用1 来代替。在程序中,每一个过程都用来注明,程序可以直接复
3、制到M文件编辑框,在图5-1 的MATLAB的默认界面的CommondWindow窗口中输入dscdmamodem点击“Enter”键,即可仿真出结果。DS-CD 的 MAMATLAB 源程序如下:function dscdmamodem(user,snr_in_dbs)%建立模型:用户信息,snr_in_dbs为信噪比%设置初始参数user=0 1 0 1 1 0 1;close all%定义步长变量%length_user=length(user);%改变用户数据中的 0为-1for i=1:length_user if user(i)=0 user(i)=-1;endend%用户传输前设
4、置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 endendfigureplot(basebandsig)axis(0 100*length_user-1.5 1.5);title(用户输入的信息)%用户的BPSK调制过程bpskmod=;fo
5、r i=1:length_user for j=0.01:0.01:tb bpskmod=bpskmod sqrt(2*eb)*user(i)*cos(2*pi*fc*j);endendlength(bpskmod)%用户BPSK调制后的波形图输出figure plot(bpskmod)axis(0 100*length_user-3 3);title(用户经BPSK调制之后的波形 )%扩频%PN码发生器seed=1-1 1-1;%设PN码初始值为1000spreadspectrum=;pn=;for i=1:length_user for j=1:10%PN 码和数据比特码的比率设为 10:
6、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;endspreadspectrum=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-
7、1;end endendlength_pnupsampled=length(pnupsampled);sigtx=bpskmod.*pnupsampled;%扩频码波形输出 figureplot(pnupsampled)axis(0 100*length_user-2 2)title(PN码波形图)%扩频后的波形图输出 figureplot(sigtx)axis(0 100*length_user-3 3);title(用PN码扩频后的波形图 )composite_signal=sigtx;%高斯白噪声信道传输snr_in_dbs=20%设信噪比为20composite_signal=awgn
8、(composite_signal,snr_in_dbs);%从信道中解扩出用户的信息rx=composite_signal.*pnupsampled;figureplot(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);endendbpskdemod=rx.*demodcar;figureplot(bpskdemod)title(用户经BPSK解调之后的波形)len_dmod=length(bpskde
9、mod);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);endend%检波过程 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 endendfigureplot(savbandsig)axis(0 100*length_user-2 2);title(用户经检波之后的波形)仿真波形的输出如下: