CDMA功率控制的MATLAB仿真

合集下载

基于MATLAB的CDMA系统仿真分析

基于MATLAB的CDMA系统仿真分析

基于MATLAB的CDMA系统仿真分析【摘要】本设计基于MATLAB仿真软件,完整地实现了CDMA通信系统的建模、仿真和分析过程错误!未找到引用源。

;仿真系统包括了CDMA编码技术、扩频技术、调制技术、信道传输以及解调恢复技术等各个功能模块。

全面的介绍了整个CDMA通信系统的工作原理和工作方式,并介绍了各个模块的参数设置;文章内容包括CDMA的发展现状以及发展趋势、CDMA通信系统的技术优势和应用领域,从而说明CDMA通信系统在的研究价值和潜力。

同时,本文也通过举例简单介绍了MATLAB软件,对用于实现系统模块功能的MATLAB仿真语句有了进一步的了解。

MATLAB软件功能齐全,操作简单,应用广泛。

通过本次设计得出,CDMA系统的抗干扰能力强,单用户的情况下,即使在各种人为和物理噪声的干扰下,依旧可以准确接收到数据。

【关键词】CDMA,MATLAB,仿真,通信系统Analysis of CDMA System Simulation Based on MATLAB【Abstract】Thi s thesis is based on the simulation function of the MATLAB software, using MATLAB language to carry out the modeling, simulation, and analysis of the CDMA communication system. At the same time, the important parts of communication system are introduced in detail, including coding, spread spectrum, decoding, modulation and channel transmission, etc. This thesis also refers to the condition, advantages and development of CDMA system to show its potential and value for research. What’s more, the thesis also using an example to give a brief introduction of the simulation platform of MATLAB software, it is such a powerful, easy operating software that is widely used in many fields. This simulation platform displays the superiority of CDMA effectively, and the result shows that CDMA can receive the accurately data even in a big noise.【Key words】Code Division Multiple Access, communication system, MATLAB, simulation目录第一章绪论 (1)1.1 CDMA的研究背景 (1)1.2 CDMA的发展趋势 (1)1.2.1 CDMA的发展现状 (1)1.2.2 CDMA的发展趋势 (2)1.3 CDMA的研究目的 (3)1.3.1 研究目的 (3)1.3.2 研究思路 (4)第二章 CDMA技术原理 (6)2.1 CDMA 基本模型 (6)2.1.1 卷积编码 (6)2.1.2 交织编码 (7)2.1.3 伪随机码 (7)2.1.4 扩频序列 (8)2.1.5 信号调制 (10)2.1.6 信号解调 (11)2.1.7 维特比译码 (12)2.2 CDMA的技术特点 (12)2.3 CDMA的主要应用优势 (13)第三章 CDMA系统仿真分析 (14)3.1 MATLAB的简介 (14)3.2 调试结果 (15)3.2.1 原始序列 (16)3.2.2 维特比编码序列 (17)3.2.3 交织编码序列 (18)3.2.4 加扰码序列 (19)3.2.5 扩频调制序列 (20)3.2.6 加噪信号 (22)3.2.7 解扩频得到的信号 (24)3.2.8 解扰解交织得到的信号 (24)3.2.9 恢复序列 (25)3.2.10 误码率 (26)3.3仿真结果 (27)总结 (30)参考文献 (31)致谢........................................................ 错误!未定义书签。

CDMA功率控制的MATLAB仿真

CDMA功率控制的MATLAB仿真
5 小结
CDMA通信系统具有抗干扰能力强、保密性好、容量 大等优点,但同时也存在一些问题。本文总结了窄带CDMA
(IS-95)通信系统的功率控制,并运用MATLAB进行了计 算机仿真,验证了开环加闭环功控的效率和结果。
参考文献 [1] Huang Xinyu,Lin Fuhua,Wu Yue. An Up- link Power Control Scheme in CDMA Mobile Commu- nication System. Journal of Southeast University( En- glish Edition),June 1998;14(1) [2] 杨世海,周良柱. 基于 MATLAB 的 CDMA 无线 通信可视化仿真.系统仿真学报,2001;13(1) [3] Lee J S,Miller L E.CDMA 系统工程手册. 北 京:人民邮电出版社,2001 [4] 郭梯云,杨家玮,李建东. 数字移动通信. 北京: 人民邮电出版社,1996 [5] 王沫然.SIMULINK建模及动态仿真.北京:电子工 业出版社,2002 [6] 刘铁,陈江.CDMA移动通信系统的测试.移动通信, 1997;(2)
BS 接收端用户 i 的 SIR 可定义为:
,k=1,2…N
其中 Pi 是用户 i 的发射功率。Wij 是从用户 j 到用户 i 所在 小区基站之间的链路增益与用户g同所在小区基站之间的链
路增益做归一化后的增益,也叫增益因子。
假设无线链路的通信质量只和接收端测量到的SIR有关
系,对单一业务的蜂窝网络而言,所有链路要求的门限SIR
—闭环:对开环控制做出迅速的补充修正,基站 定期对收到的移动台信号进行测量,对信号的SIR(信噪 比)与期待的门限SIR进行比较,然后对移动台发出增加 或减弱其发射功率的命令。特点:控制准确度高,有利 于解决快衰落,但响应时间长,这段时间内会造成各种 干扰。同时基站必须对每个移动台有响应的控制信道, 开销比较大。实际中常采用开闭环结合的方法。

基于Matlab的CDMA通信系统分析及仿真

基于Matlab的CDMA通信系统分析及仿真

摘要利用MATLAB平台的SIMULINK可视化仿真功能,结合CDMA的实际通信情况,利用MATLAB组建出完整的CDMA通信系统,完成整体设计方案,实现完整的发送到接收的端到端的CDMA无线通信系统的建模、仿真和分析,介绍了CDMA的主要环节(包括扩频技术、差错控制技术、调制技术、信道等)的参数设置。

单用户在不同信道环境下,信道的噪声对结果影响很大,噪声功率越大,系统的误码率越大。

多用户在相同信道环境下的仿真时,由于是采用了噪声功率为0.01W的信道传输环境,所以在单用户情况下误码率为0,而增加了用户数之后,误码率也随之增加。

可见,信号在传输过程中,除了受到信道噪声的影响外,还存在多址接入干扰、单频干扰、窄带干扰、跟踪式干扰等,主要是多址接入干扰。

关键词:CDMA;通信系统;可视化仿真;MATLAB;SIMULINKAbstractMATLAB platform using SIMULINK simulation visualization features, combined with the actual CDMA communications, the use of MATLAB to form a complete CDMA communication system, the completion of the overall design, to achieve a complete end-to-end is sent to the receiver of the CDMA wireless communication system modeling , simulation and analysis ; Describes the key features of CDMA (including spread spectrum technology, error control techniques, modulation techniques, channel, etc.) parameters. Single-user channel in different environments, channel noise impact on the results, the greater the noise power, the greater the system bit error rate. Multi-user channel in the same simulation environment, as is the noise power of 0.01W transmission channel environment, so in the case of single-user bit error rate is 0, while the increase in the number of users, the error rate also increase. Can be seen that the signal during transmission, in addition to being the impact of channel noise, but also the existence of multiple access interference, and single-frequency interference, narrowband interference, jamming, such as tracking, mainly multiple access interference.Key words: Code Division Multiple Access;communication;system;visualizing simulation;MATLAB;SIMULINK目录摘要 (I)Abstract (II)目录 (III)绪论 (1)1. MATLAB的形成和发展 (2)1.1 MATLAB的主要特点 (2)1.2 MATLAB的发展现状 (4)1.3 CDMA码分多址通信技术简介 (4)2. Matlab的CDMA通信系统分析及仿真 (8)2.1 整体仿真框图 (8)2.2 信源 (8)2.3 伪随机序列生成器 (8)2.4 扩频 (9)2.5 编码和调制 (9)2.6 接收端 (13)3. 仿真系统 (15)3.1信源 (15)3.2编码 (15)3.3扩频 (16)3.4调制与解调 (16)3.5误码判断 (16)4. 实验结果 (17)4.1 单用户在不同信道环境下的仿真 (17)4.2 多用户在相同信道环境下的仿真 (17)结束语 (18)参考文献 (19)致谢 (20)绪论20世纪60年代以来,随着民用通信事业的发展,频带拥挤问题日益突出。

cdma的MATLAB仿真源程序文件

cdma的MATLAB仿真源程序文件

°%*************************************************************************************% This fun cti on pertains to the addition of AWGN with mean zero and%parameter 'varia nee' to an in put sig nal.%% AUTHOR: Wenbin Luo% DATE : 04/12/01%% SYNOPSIS: y = awg n(x,var)% x ---> in put sig nal% var ---> varia nee% y > y = x + AWGNQ%****************************************************************************** ***** function y = awg n( x,var)w = randn( 1,le ngth(x));w = w - mea n( w)* on es(size(w));w = sqrt(var)*(w / std(w));x = x(:);w = w(:);y = x + w;^%****************************************************************************** *******% This fun etion does the DS-SS modulation%AUTHOR: Wen bi n LuoDATE : 04/28/01%% SYNOPSIS: y = ds_mod(c,x)% c ---> user code (colu mn vector)% x ---> in put sig nal (row vector)% y ---> tmp = c*x, y = tmp(:) (ds-ss modulated sig nal, colu mnvector) °%*********************************************************************************** function y = ds_mod(c,x) tmp = c*x;y = tmp(:);°%****************************************************************************** *******% This function gen erates ran dom +1/-1 seque nee within depe ndent iden tically% distributed symbols%% AUTHOR: Wenbin Luo% DATE : 04/28/01%% SYNOPSIS: x = bin ge n(L)% L ---> nu mber of ran domsymbols °%*********************************************************************************** function x = bingen(L) %ge nerate L symbols ran domly with value +1 or -1 x =ran d(1,L);x(fi nd(x<0.5)) = -1;x(fin d(x >=0.5)) = 1;°%****************************************************************************** *******% This fun ction does the DS-SS modulation%% AUTHOR: Wenbin Luo% DATE : 04/28/01%% SYNOPSIS: x = ds_demod(c,y)% c ---> user code (colu mn vector)% y ---> tmp = c*x, y = tmp(:) (ds-ss modulated sig nal, colu mn vector)% x ---> in put sig nal (row vector)Q%*********************************************************************************** function x = ds_demod(c,y) tmp = reshape(y, le ngth(c), le ngth(y)/le ngth(c)); tmp = tmp';%x is a colu mn vector x = tmp * c;% convert to row vector x = x';°%*************************************************************************************% This function does the DS-SS modulation%% AUTHOR: Wenbin Luo% DATE : 04/28/01%% SYNOPSIS: y = ds_mod(c,x)% c ---> user code (column vector)% x ---> in put sig nal (row vector)% y ---> tmp = c*x, y = tmp(:) (ds-ss modulated signal, column vector)Q%***********************************************************************************function y = ds_mod(c,x)tmp = c*x;y = tmp(:);°%*********************************************************** % This mfunction gen erates faded en velope and phase % corresponding to Rayleigh fading%% AUTHOR: Wenbin Luo%DATE : 04/27/01%% FUNCTION SYNOPSIS:%[en v,phi] = fade(L,para)% Parameter Descriptio n:% L : nu mber of samples n eeded% varia nee : varia nee°%********************************************************** function [en v,phi] = fade(L,varia nee)% Error checkif variance <= 0error('Positive varia nce n eeded')elseif nargin ~= 2error('I nsufficie nt in put parameters')end% Gen erate bivariate Gaussia n un correlated% ran dom variablesmu = zeros(1,2);C = varia nce*eye(2,2);r = mvnrn d(mu,C,L);% Convert to polar coord inates and compute% magn itude and phasez = r(:,1) + j*r(:,2);env = abs(z); phi = an gle(z);°%********************************************************** °%****************************** *****************************% This mfun ctio n gen erates two cha nn els of faded % en velope and phase corresp onding to% Rayleigh fadi ng%% AUTHOR: Wenbin Luo% DATE : 04/27/01%% FUNCTION SYNOPSIS:% [en v,phi] = fade_diversity(L,para)%% Parameter Descriptio n:% L : nu mber of samples n eeded% varia nee : varia nee°%**********************************************************function [en v1,e nv2] = fade_diversity(L,varia nee)% Error checkif variance <= 0error('Positive varia nce n eeded')elseif nargin ~= 2error('I nsufficie nt in put parameters')end% Gen erate bivariate Gaussia n un correlated% ran dom variablesmu = zeros(1,4);C = varia nce*eye(4,4);r = mvnrn d(mu,C,L);% Convert to polar coord inates and compute% mag nitude and phase z1 = r(:,1) + j*r(:,2);z2 = r(:,3) + j*r(:,4);envl = abs(zl);env2 = abs(z2);°%**********************************************************°%*********************************************************** % This mfun ctio n gen erates freque ncy selective % Rayleigh fadi ng%% AUTHOR: Wenbin Luo% DATE : 05/02/01%% FUNCTION SYNOPSIS: % y = fade_fs(x,L)%% Parameter Descripti on:output sig nal% x : in put sig nalnu mber of in depe ndent Rayleighfadi ng process°%********************************************************** fun ctio n y = fade_fs(x ,L) % Gen erate bivariate Gaussia n un correlated% ran dom variablestmpl = 0:1:(L-1);tmpl = exp(-tmpl);tmp(1:2:2*L-1) = tmpl;tmp(2:2:2*L) = tmpl;mu = zeros(1,2*L);C = 0.5*diag(tmp);x_le n = len gth(x);r = mvn rnd(mu,C,x_le n);% Convert to polar coord in ates and compute magn itudex = x(:);y = zeros(x_le n,1);for i = 1:L,z = r(:,2*i-1) + j*r(:,2*i);env = abs(z); %phi = an gle(z);tmp_y = en v.*x;tmp_y = [zeros(i-1,1); tmp_y(1:x_le n-i+1)];y = y + tmp_y;end°%**********************************************************Q%**********************************************************************% This program computes the average BER of a DS-SS/BPSK% com mun icati on system with binary BCH code in the AWGN cha nnelAUTHOR: Wen bi n Luo % DATE : 04/28/01%% fin al11_extra.m% °%**********************************************************************%fun ctio n Plot_Pe = fin al11_extra() clear all;%close all;format lo ng;%set up the threshold VtVt = 0;Plot_Pe =[];N = 16;x_n um = 2500;plot_EbNo = -20:2:10;for EbNo = -20:2:10,%con vert back from dBEb_No = EbNo; %dBEb_No = 10.A(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%ge nerate BPSK symbols ran domly with value +1 or -1 x = bingen(x_nu m);x_org = x;%adds error-correct ing codeenc_N = 15; enc_K = 5; %7/4 or 15/5x(fi nd(x < 0)) = 0;x = en code(x,e nc_N,e nc_K,'bch');x = x';x(fin d(x == 0)) = -1;%DS-SS modulate symbols with user code c = bingen( N); y = ds_mod(c(:),x);%scale by appropriate power factory = sqrt(p)*y;%add AWGN to sig naly = awg n(y,1);%DS-SS demodulate symbols with user code x_de = ds_demod(c(:),y);%decisi on x_de(fi nd(x_de < 0)) = -1;x_de(fi nd(x_de >=0)) = 1;%decode error-correct ing codex_de(fi nd(x_de < 0)) = 0;x_de = decode(x_de,e nc_N,e nc_K,'bch');x_de = x_de';x_de(fi nd(x_de == 0)) = -1;% -----------------------------------Pe = len gth(fi nd(x_org - x_de))/x_ num;Plot_Pe = [Plot_Pe Pe];end %e nd for EbNo% ------------------------------------------- %return;%display the calculated Pd and PfaPlot_Pe%plot Pe versus Eb/Nosemilogy(plot_EbNo,Plot_Pe,'bo-')xlabel('Eb/No (dB)')ylabel('BER')s=spri ntf('BER versus Eb/No with binary BCH code in the AWGN cha nn el'); title(s);Q%**********************************************************************% This program computes the average BER of a DS-SS/BPSK% com mun icati on system with binary BCH code in the AWGN cha nnel%% AUTHOR: Wenbin Luo% DATE : 04/28/01%% fin al11_extra.m%Q%**********************************************************************%fun ctio n Plot_Pe = fin al11_extra() clear all;%close all;format Io ng;%set up the threshold VtVt = 0;Plot_Pe =[];N = 16;x_n um = 2500; plot_EbNo = -20:2:10; for EbNo = -20:2:10,%con vert back from dBEb_No = EbNo; %dBEb_No = 10.A(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%ge nerate BPSK symbols ran domly with value +1 or -1 x = bingen(x_nu m); x_org = x;%adds error-correct ing codeenc_N = 15; enc_K = 5; %7/4 or 15/5 x(fi nd(x < 0)) = 0;x = en code(x,e nc_N,e nc_K,'bch');x = x';x(fin d(x == 0)) = -1;%DS-SS modulate symbols with user code c = bingen( N);y = ds_mod(c(:),x);%scale by appropriate power factor y = sqrt(p)*y;%add AWGN to sig naly = awg n(y,1);%DS-SS demodulate symbols with user code x_de = ds_demod(c(:),y);%decisi on x_de(fi nd(x_de < 0)) = -1;x_de(fi nd(x_de >=0)) = 1;%decode error-correct ing codex_de(fi nd(x_de < 0)) = 0;x_de = decode(x_de,e nc_N,e nc_K,'bch');x_de = x_de';x_de(fi nd(x_de == 0)) = -1;% -----------------------------------Pe = len gth(fi nd(x_org - x_de))/x_ num;Plot_Pe = [Plot_Pe Pe];end %e nd for EbNo% -------------------------------------------%return;% -------------------------------------------%display the calculated Pd and Pfa Plot_Pe%plot Pe versus Eb/No semilogy(plot_EbNo,Plot_Pe,'bo-') xlabel('Eb/No (dB)') ylabel('BER') s=spri ntf('BER versus Eb/No with binary BCH code in the AWGN cha nn el');title(s);°%**********************************************************************% This program computes the average BER of a DS-SS/BPSK% com mun icati on system with binary BCH code in the AWGN cha nnel%% AUTHOR: Wenbin Luo% DATE : 04/28/01%% fin al11_extra.m%Q%**********************************************************************%fun ctio n Plot_Pe = fin al11_extra() clear all;%close all;format lo ng;%set up the threshold VtVt = 0;Plot_Pe =[];N = 16;x_n um = 2500;plot_EbNo = -20:2:10;for EbNo = -20:2:10,%con vert back from dBEb_No = EbNo; %dBEb_No = 10.A(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%ge nerate BPSK symbols ran domly with value +1 or -1 x = bingen(x_nu m); x_org = x;%adds error-correct ing codeenc_N = 15; enc_K = 5; %7/4 or 15/5x(fi nd(x < 0)) = 0;x = en code(x,e nc_N,e nc_K,'bch');x = x';x(fin d(x == 0)) = -1;%DS-SS modulate symbols with user code c = bingen( N);y = ds_mod(c(:),x);%scale by appropriate power factor y = sqrt(p)*y;%add AWGN to sig naly = awg n(y,1);%DS-SS demodulate symbols with user code x_de = ds_demod(c(:),y);%decisi on x_de(fi nd(x_de < 0)) = -1;x_de(fi nd(x_de >=0)) = 1;%decode error-correct ing codex_de(fi nd(x_de < 0)) = 0;x_de = decode(x_de,e nc_N,e nc_K,'bch');x_de = x_de';x_de(fi nd(x_de == 0)) = -1;Pe = len gth(fi nd(x_org - x_de))/x_ num;Plot_Pe = [Plot_Pe Pe];end %e nd for EbNo% -------------------------------------------%return;% -------------------------------------------%display the calculated Pd and PfaPlot_Pe%plot Pe versus Eb/Nosemilogy(plot_EbNo,Plot_Pe,'bo-')xlabel('Eb/No (dB)')ylabel('BER')s=spri ntf('BER versus Eb/No with binary BCH code in the AWGN cha nn el');title(s);Q%*********************************************************************% This program computes the average BER of a DS-SS/BPSK% com mun icati on system in the prese nee of pulsed no ise jammi ng % and AWGN%% AUTHOR: Wenbin Luo% DATE : 04/28/01fin al12.m°%******************************************************************** %fun ctio n Plot_Pe = fin al12() clear all;%close all;format lo ng;%set up the threshold VtVt = 0;Plot_Pe =[];N = 16;ro = 0.2; %1,0.4, 0.2x_n um = 10000; plot_EbNo = -20:2:10;for EbNo = -20:2:10,%con vert back from dBEb_No = EbNo; %dBEb_No = 10.A(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%ge nerate BPSK symbols ran domly with value +1 or -1 x = bingen(x_nu m);%DS-SS modulate symbols with user code c = bingen( N);y = ds_mod(c(:),x);%scale by appropriate power factor y = sqrt(p)*y;%add Pulsed Noise Jammer to sig naly = [awg n(y(1:ro*le ngth(y)),1/ro); y((ro*le ngth(y)+1):le ngth(y))];%DS-SS demodulate symbols with user code x_de = ds_demod(c(:),y);%decisi on x_de(fi nd(x_de < 0)) = -1;x_de(fi nd(x_de >=0)) = 1;Pe = len gth(fi nd(x - x_de))/x_ num;Plot_Pe = [Plot_Pe Pe];end %e nd for EbNo% -------------------------------------------%return;% -------------------------------------------%display the calculated Pd and PfaPlot_Pe%plot Pe versus Eb/No%subplot(2,1,1)semilogy(plot_EbNo,Plot_Pe,'m*-')xlabel('10log_{10}[(P/J)(W/R)] (dB)')ylabel('BER')s=spri ntf('BER versus 10log_{10}[(P/J)(W/R)] in pulsed n oise jammi ng and AWGN'); title(s);Q%*********************************************************************% This program computes the average BER of a DS-SS/BPSK% com mun icatio n system in barrage no ise jammi ng and AWGN%AUTHOR: Wen bi n LuoDATE : 05/02/01% fin al12_extra.m°%********************************************************************% fun ctio n Plot_Pe = fin al12_extra() clear all;%close all;format lo ng;%set up the threshold VtVt = 0;Plot_Pe =[];N = 16;x_n um = 10000;% --------------------------------------------------------%con vert back from dBEb_No = 5; % 2, 4, 6 dBEb_No = 10.A(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;% -------------------------------------------------------- plot_EbNj = 0:2:50; for EbNj = 0:2:50,%con vert back from dBEb_Nj = EbNj; %dBEb_Nj = 10.A(Eb_Nj/10);Nj = Eb / Eb_Nj;%ge nerate BPSK symbols ran domly with value +1 or -1 x = bingen(x_nu m);%DS-SS modulate symbols with user code c = bingen( N);y = ds_mod(c(:),x);%scale by appropriate power factor y = sqrt(p)*y; %add barrage noise jamming and AWGN to signal y = awg n( y,(Nj/2)+1);%y = awg n(y,1);%DS-SS demodulate symbols with user code x_de = ds_demod(c(:),y);%decisi on x_de(fi nd(x_de < 0)) = -1;x_de(fi nd(x_de >=0)) = 1;Pe = len gth(fi nd(x - x_de))/x_ num;Plot_Pe = [Plot_Pe Pe];end %e nd for EbNo% -------------------------------------------%return;% -------------------------------------------%display the calculated Pd and Pfa Plot_Pe%plot Pe versus Eb/No %subplot(2,1,1)semilogy(plot_EbNj,Plot_Pe,'m*-')xlabel('10log_{10}[(P/J)(W/R)] (dB)')ylabel('BER')and AWGN'); s=spri ntf('BER versus 10log_{10}[(P/J)(W/R)] in barrage no ise jammi ng title(s);grid on;Q%********************************************************************* % This programcomputes the average BER in Rayleigh fadi ng% and AWGN%% AUTHOR: Wenbin Luo% DATE : 04/28/01%% fin al21.m%°%********************************************************************%fun ctio n Plot_Pe = fin al21() clear all;%close all;format lo ng;%set up the threshold VtVt = 0;Plot_Pe =[];N = 16;x_n um = 10000;plot_EbNo = -30:2:30; %-20:2:10;for EbNo = -30:2:30,%con vert back from dBEb_No = EbNo; %dBEb_No = 10.A(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%ge nerate BPSK symbols ran domly with value +1 or -1 x = bingen(x_nu m); x_origi nal = x;x = sqrt(p)*x;%ge nerate Rayleigh fadi ng[en v,phi] = fade(le ngth(x),0.5);%ge nerate faded seque nee x = en v.*x';x = x';%DS-SS modulate symbols with user code e = bingen( N);y = ds_mod(c(:),x);%seale by appropriate power factor %y = sqrt(p)*y;%add AWGN to sig nal y = awg n(y,1);%DS-SS demodulate symbols with user code x_de = ds_demod(c(:),y);%decisi on x_de(fi nd(x_de < 0)) = -1;x_de(fi nd(x_de >=0)) = 1;Pe = len gth(fi nd(x_orig inal - x_de))/x_ num;Plot_Pe = [Plot_Pe Pe];end %e nd for EbNo% -------------------------------------------%return;% -------------------------------------------%display the calculated Pd and PfaPlot_Pe%plot Pe versus Eb/No%subplot(2,1,1)semilogy(plot_EbNo,Plot_Pe,'r A-')xlabel('Eb/No (dB)')ylabel('BER')s=spri ntf('BER versus Eb/No in Rayleigh fadi ng and AWGN'); title(s); grid on;Q%*********************************************************************% This program simulates a predetecti on selective comb ining% receiver for a Rayleigh fading cha nnel%% AUTHOR: Wenbin Luo% DATE : 04/28/01%fin al21 extra.m°%******************************************************************** clear all; %close all;format Io ng;%set up the threshold VtVt = 0;Plot_Pe =[];N = 16;x_n um = 10000;plot_EbNo = -30:2:20; %-20:2:10;for EbNo = -30:2:20,%con vert back from dBEb_No = EbNo; %dBEb_No = 10.A(Eb_No/10); %assume No = 2;No = 2;Eb = No * Eb_No; %calculate power pTc = 1;Ts = N * Tc; p = Eb / Ts;%ge nerate BPSK symbols ran domly with value +1 or -1 x = bingen(x_nu m); x_origi nal = x;x = sqrt(p)*x;%ge nerate Rayleigh fadi ng[en v1,e nv2] = fade_diversity(le ngth(x),0.5);%ge nerate faded seque neex_fad1 = en v1.*x';x_fad1 = x_fad1';x_fad2 = en v2.*x';x_fad2 = x_fad2:%DS-SS modulate symbols with user code c = bingen( N);y_fad1 = ds_mod(c(:),x_fad1);y_fad2 = ds_mod(c(:),x_fad2);%scale by appropriate power factor %y = sqrt(p)*y;%add AWGN to sig nal y_fad1 = awg n( y_fad1,1); y_fad2 = awg n( y_fad2,1);%DS-SS demodulate symbols with user code x_de1 = ds_demod(c(:),y_fad1); x_de2 = ds_demod(c(:),y_fad2);%choose branch with larger BENR ind1 = fin d(abs(x_de1) >= abs(x_de2)); ind2 = fin d(abs(x_de1) < abs(x_de2));x_de(i nd1) = x_de1(i nd1);x_de(i nd2) = x_de2(i nd2);%decisi on x_de(fi nd(x_de < 0)) = -1;x_de(fi nd(x_de >=0)) = 1;Pe = len gth(fi nd(x_orig inal - x_de))/x_ num;Plot_Pe = [Plot_Pe Pe];end %e nd for EbNo%display the calculated Pd and PfaPlot Pe%plot Pe versus Eb/No%subplot(2,1,1)semilogy(plot_EbNo,Plot_Pe,'ro-')xlabel('Eb/No (dB)')ylabel('BER')s=spri ntf('BER versus Eb/No in Rayleigh fadi ng and AWGN'); title(s); grid on;Q%*********************************************************************% This program computes the average BER in Rayleigh fadi ng% and AWGN%% AUTHOR: Wenbin Luo% DATE : 04/28/01%% fin al22.m% °%******************************************************************** clear all; %close all;format lo ng;%set up the threshold VtVt = 0;Plot_Pe =[];N = 16;x_n um = 10000;plot_EbNo = -20:2:30; %-20:2:10;for EbNo = -20:2:30,%con vert back from dBEb_No = EbNo; %dBEb_No = 10.A(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%ge nerate BPSK symbols ran domly with value +1 or -1 x = bingen(x_nu m); x_origi nal = x;x = sqrt(p)*x;%ge nerate freque ncy selective Rayleigh fading tmp = fade_fs(x,7);x = tmp';%DS-SS modulate symbols with user code c = bingen( N);y = ds_mod(c(:),x);%scale by appropriate power factor %y = sqrt(p)*y;%add AWGN to sig naly = awg n(y,1);%DS-SS demodulate symbols with user code x_de = ds_demod(c(:),y);%decisi on x_de(fi nd(x_de < 0)) = -1;x_de(fi nd(x_de >=0)) = 1;Pe = len gth(fi nd(x_orig inal - x_de))/x_ num;Plot_Pe = [Plot_Pe Pe];end %e nd for EbNo%display the calculated Pd and PfaPlot_Pe%plot Pe versus Eb/No%subplot(2,1,1)semilogy(plot_EbNo,Plot_Pe,'r*-')xlabel('Eb/No (dB)')ylabel('BER')s=spri ntf('BER versus Eb/No in Rayleigh fadi ng and AWGN'); title(s);grid on;Q%********************************************************************* % This program computes the average BER versus Eb/No of K users% tran smitt ing BPSK symbols at an equal power level using a% DS-CDMA scheme assum ming perfect syn chro nism and orthog onal % codes in AWGN%% AUTHOR: Wenbin Luo% DATE : 04/29/01%% fin al31.m% °%******************************************************************** clear all;%close all;format lo ng;%set up the threshold VtVt = 0;Plot_Pe =[];K = 16;N = 32;x_n um = 5000; plot_EbNo = -20:3:10; for EbNo = -20:3:10,%con vert back from dBEb_No = EbNo; %dBEb_No = 10.A(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%ge nerate BPSK symbols ran domly with value +1 or -1 x = bingen(x_nu m);%DS-SS modulate symbols with user codeUserCode = hadamard(N);c = UserCode(1,:);y = ds_mod(c(:),x);%add other users' sig nal as in terfere neefor t = 2:1:K,tmp_x =bingen(x_nu m);tmp = UserCode(t,:);tmp_y =ds_mod(tmp(:),tmp_x);y = y + tmp_y;end % t%seale by appropriate power factor y = sqrt(p)*y;%add AWGN to sig naly = awg n(y,1);%DS-SS demodulate symbols with user code x_de = ds_demod(c(:),y);%decisi on x_de(fi nd(x_de < 0)) = -1;x_de(fi nd(x_de >=0)) = 1;Pe = len gth(fi nd(x - x_de))/x_ num;Plot_Pe = [Plot_Pe Pe];end %e nd for EbNo%display the calculated Pd and PfaPlot_Pe%plot Pe versus Eb/No%subplot(2,1,1)semilogy(plot_EbNo,Plot_Pe,'m*-')xlabel('Eb/No (dB)')ylabel('BER')title('BER versus Eb/No using DS-CDMA: perfect synchronism between users'); grid on; Q%********************************************************************** % This program computes the average BER versus Eb/No of K users% tran smitt ing BPSK symbols at an equal power level using a% slow FH-MA scheme assum ming perfect synchronism and orthogo nal % codes in AWGNAUTHOR: Wen bi n Luo % DATE : 05/01/01%% fin al31_fh.m°%********************************************************************* clear all; %close all;format lo ng;%set up the threshold VtVt = 0;Plot_Pe =[];K = 16; %4,8,16N = 32;x_n um = 5000;plot_EbNo = -20:3:10;for EbNo = -20:3:10,%con vert back from dBEb_No = EbNo; %dBEb_No = 10.A(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%ge nerate BPSK symbols ran domly with value +1 or -1 x = bingen(x_nu m);%DS-SS modulate symbols with user codeUserCode = fh(N,K);c = UserCode(1,:);y = ds_mod(c(:),x);%add other users' sig nal as in terfere neefor t = 2:1:K,tmp_x =bingen(x_nu m);tmp = UserCode(t,:);tmp_y =ds_mod(tmp(:),tmp_x);y = y + tmp_y;end % t%scale by appropriate power factory = sqrt(p)*y;%add AWGN to sig nal y = awg n_complex(y,1);%DS-SS demodulate symbols with user code x_de = real(ds_demod(conj(c(:)),y));%decisi on x_de(fi nd(x_de < 0)) = -1;x_de(fi nd(x_de >=0)) = 1;Pe = len gth(fi nd(x - x_de))/x_ num;Plot_Pe = [Plot_Pe Pe];end %e nd for EbNo%display the calculated Pd and PfaPlot_Pe%plot Pe versus Eb/No%subplot(2,1,1)semilogy(plot_EbNo,Plot_Pe,'m*-')xlabel('Eb/No (dB)')ylabel('BER') title('BER versus Eb/No using slow FH-MA: perfect synchronism betwee n users');grid on;°%*********************************************************************% This program computes the average BER versus Eb/No of K users% tran smitt ing BPSK symbols at an equal power level using a% DS-CDMA scheme assum ming a ran dom asynchronism betwee n users %% AUTHOR: Wenbin Luo% DATE : 04/29/01%% fin al32.m%°%******************************************************************** clear all;%close all;%set up the threshold VtVt = 0;Plot_Pe =[];K = 4;N = 32;x_n um = 30000;%ge nerates a ran dom asynchronism betwee n users asyn = ran d(1,K)*6; %as yn = floor(as yn);asyn = floor(as yn) + 1;plot_EbNo = -20:3:50;for EbNo = -20:3:50,%con vert back from dBEb_No = EbNo; %dBEb_No = 10.A(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;%ge nerate BPSK symbols ran domly with value +1 or -1 x = bingen(x_nu m);%DS-SS modulate symbols with user codeUserCode = hadamard(N);c = UserCode(1,:);y = ds_mod(c(:),x);%add other users' sig nal as in terfere neefor t = 2:1:K,tmp_x = bingen(x_nu m);tmp = UserCode(t,:);tmp_y = ds_mod(tmp(:),tmp_x);tmpY_le n = len gth(tmp_y);tmp_y = [tmp_y((as yn( t)+1):tmpY_le n); tmp_y(1:as yn( t))];y = y + tmp_y;end % t%scale by appropriate power factory = sqrt(p)*y;%add AWGN to sig naly = awg n(y,1);%DS-SS demodulate symbols with user code x_de = ds_demod(c(:),y);%decisi on x_de(fi nd(x_de < 0)) = -1;x_de(fi nd(x_de >=0)) = 1;Pe = len gth(fi nd(x - x_de))/x_ num;Plot_Pe = [Plot_Pe Pe];end %e nd for EbNo%display the calculated Pd and PfaPlot_Pe%plot Pe versus Eb/No%subplot(2,1,1)semilogy(plot_EbNo,Plot_Pe,'bs-')xlabel('Eb/No (dB)')ylabel('BER')title('BER versus Eb/No using DS-CDMA: a ran dom asynchronism betwee n users'); grid on;Q%************************************************************************ % This program computes the average BER versus Eb/No of K users% tran smitt ing BPSK symbols at an equal power level using a% slow FH-MA scheme assum ming a ran dom asynchronism betwee n users%% AUTHOR: Wenbin Luo % DATE : 04/29/01final32 fh.m°%************************************************************************ clear all;%close all;format lo ng;%set up the threshold VtVt = 0;Plot_Pe =[];K = 32;N = 32;x_n um = 10000;%ge nerates a ran dom asynchronism betwee n users asyn = ran d(1,K)*6;%as yn = floor(as yn);asyn = floor(as yn) + 1;plot_EbNo = -20:3:50;for EbNo = -20:3:50,%con vert back from dBEb_No = EbNo; %dBEb_No = 10.A(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%ge nerate BPSK symbols ran domly with value +1 or -1 x = bingen(x_nu m);%DS-SS modulate symbols with user codeUserCode = fh(N,K);c = UserCode(1,:);y = ds_mod(c(:),x);%add other users' sig nal as in terfere nee for t = 2:1:K,tmp_x = bingen(x_nu m); tmp = UserCode(t,:);tmp_y = ds_mod(tmp(:),tmp_x);tmpY_le n = len gth(tmp_y);tmp_y = [tmp_y((as yn( t)+1):tmpY_le n); tmp_y(1:as yn( t))];y = y + tmp_y;end % t。

基于matlab的simulink的cdma系统多用户仿真要点

基于matlab的simulink的cdma系统多用户仿真要点

基于 Matlab 的 Simulink 的 CDMA 系统多用户仿真要点简介CDMA(Code Division Multiple Access)是一种数字无线通信技术,其中多个用户在同一频带上传输数据,每个用户使用唯一的编码序列来区分其他用户的信息。

在CDMA系统中,使用扩频技术将数据编码成宽带信号,然后使用独立的编码序列将它们混合在一起,并在接收端进行解码以恢复原始数据,因此CDMA技术可以提供更高的信道容量。

通过使用基于 Matlab 的 Simulink,可以方便地进行CDMA系统的仿真,并对多个用户进行仿真,以评估系统性能。

要点1. CDMA系统的建模在CDMA系统的仿真过程中,需要首先建立系统模型。

我们可以使用 Simulink 中的 Signal Processing Blockset 来实现CDMA系统模型的建模。

Signal Processing Blockset 中包含了各种信号处理模块,包括滤波器、混合器和解扰器等等,这些模块可以用来构建CDMA系统的传输通道。

2. 多用户仿真在CDMA系统中,多个用户可以同时传输数据,因此我们需要对多个用户进行仿真,并分别评估其性能。

为了实现这个目标,我们可以使用 Signal Processing Blockset 中的 Multiport Switch 模块,将多个用户的数据流合并成一个流,然后通过解码器对其进行解码。

在这个过程中,我们可以使用不同的编码序列对每个用户进行编码,以确保数据的安全性。

3. 性能评估在CDMA系统中,我们可以通过 BER(Bit Error Rate)来评估系统的性能。

在仿真过程中,我们可以通过向系统中注入固定数量的错误比特,并计算接收端出现错误的比特数量来计算BER。

通过多次仿真,可以评估不同编码序列、码元速率、信噪比等因素对系统性能的影响。

在本篇文档中,我们介绍了基于 Matlab 的 Simulink 的 CDMA 系统多用户仿真的要点。

CDMA系统的研究与MATLAB仿真

CDMA系统的研究与MATLAB仿真

C D M A系统的研究与M A T L A B仿真Last updated on the afternoon of January 3, 2021安徽财经大学(《移动通信》课程论文)题目:CDMA系统的研究与MATLAB仿真学院:管理科学与工程学院专业:电子信息工程姓名:付帅学号:电话:183任课教师:许晓丽论文成绩:2015年10月CDMA系统的研究与MATLAB仿真摘要:CDMA(CodeDivisionMultipleAccess)是在扩频通信的基础上发展起来的。

所谓扩频,是将原信号频谱扩展到宽带中进行传输的一种技术。

它主要利用相互正交(或尽可能正交)的不同随机码区分用户,实现多用户同时使用同一频率接入系统和网络。

经过几种网络的实现和发展,CDMA已经逐渐成熟起来。

我国的CDMA发展十分迅速,网络构架已初具规模。

预计在将来,CDMA将与GSM一样,在整个通信业起到举足轻重的作用。

仿真是一个系统应用于实际生活前的模拟,能有效的发现问题、纠正问题,而MATLAB是最具影响力、最有活力的软件之一,在科学运算、自动控制、通信仿真等领域有着广泛地应用。

本课题利用MATLAB对DS-CDMA系统进行仿真。

在研究DS-CDMA系统理论的基础上,利用SIMULINK对其进行仿真,根据系统功能和指标要求,对信道、扩频/解扩、QPSK(QuadratureReferencePhaseShiftKeying,四相相移键控)调制/解调等模块进行了设计,并设置了相对应的参数,最后给出系统仿真的整个框图。

通过波形、频谱图、相位等结果,对系统进行了性能分析,并作了进一步改进与调试。

仿真结果证明了整个设计系统的正确性。

由频谱特性可以看出,信源信号的频谱被大大展宽,验证了扩频的实现;由误码率分析表明,系统对加性高斯噪声等具有一定的抗干扰能力等。

可以看出,MATLAB在系统动态仿真中具有较大优越性和重要作用。

关键词:直扩系统;CDMA;PN扩频;QPSK调制解调;simulink仿真1绪论课题的背景和研究意义目前,CDMA技术正逐渐向新一代的通信标准3G过渡,这是技术发展、用户需求、市场竞争等各方面因素造成的。

-基于MATLAB的多用户CDMA通信系统设计与仿真

-基于MATLAB的多用户CDMA通信系统设计与仿真

设计题目:基于MATLAB的多用户CDMA通信系统设计与仿真摘要随着科技的不断发展以及人们生活水平的不断提高,人们对于移动通信的需求不断增长,本文设计了目前流行的CDMA系统,可实现数字信号的扩频解扩与调制解制。

本文设计的系统分为单用户通信和多用户通信,二者所用的调制方式不完全相同。

以单用户为例,在系统的信源处产生一个数字信号序列,然后对其进行WALSH 码扩频,再对扩频码进行调制,然后在信道中加入噪声,最后实现解扩和解调。

在本文的最后还对整个CDMA系统进行了优化,设计了其外观界面,将调制方式和原理框图联系到一起,很好的实现了整个CDMA系统的仿真。

关键词:CDMA;扩频;PSK;QPSK;仿真;ABSTRACTWith the continuous development of science and technology and people's standard of living continues to improve, the demamd of mobile communication for people grows continuously, This paper describes the design of the current epidemic of CDMA systems, digital signal spread spectrum modulation and dispreading system solutions. This paper describes the design of the system which is divided into single-user and multi-user communication communication. Two kinds of modulation used in the different ways. A single-user example, the source of the system creats a Department of digital signal sequence, and the system achieve its spread spectrum with WALSH code,then modulates the code of spread spectrum, then joined the channel noise,in the end, peforms the solution to expand and demodulation. At last,in this paper the entire CDMA system optimized design of the interface appearance,makes Modulation and block diagram linked together, achieves good of the whole CDMA System Simulation.Keywords:CDMA; Spread spectrum; PSK;QPSK ; Simulation目录1 绪论 (11.1CDMA发展史 (11.2CDMA的优点及应用前景 (21.3论文结构及课题研究内容 (52 CDMA系统的总体设计思路 (7 2.1系统总体设计结构 (72.2系统的实现原理 (73 系统的相关原理及设计过程 (10 3.1MATLAB简介及仿真方法 (10 3.1.1 MATLAB介绍 (103.1.2 仿真方法论 (133.2扩频技术及其仿真实现 (15 3.2.1扩频技术简介 (163.2.2 扩频的仿真实现 (183.3PSK调制解调与仿真实现 (21 3.3.1 PSK调制解调原理 (213.3.2 PSK的仿真实现 (223.4QPSK调制解调及仿真实现 (24 3.4.1 QPSK调制解调原理 (253.4.2 QPSK的仿真实现 (263.5多用户CDMA通信 (303.5.1 DPSK调制解调原理 (303.5.1 多用户DPSK仿真实现 (314 外观界面设计 (344.1GUI (344.1.1 GUI和GUIDE (344.1.2 使用GUIDE创建GUI界面 (364.2主题界面设计流程 (384.2.1 仿真原理图的设计 (384.2.2 系统界面设计流程 (394.3回调函数 (404.3.1 回调函数原型 (404.3.2 回调函数编程实现各界面互联 (415 总结与展望 (435.1系统不足与改进 (435.2系统升级及展望 (43致谢.............................................. 错误!未定义书签。

实验五-CDMA原理的matlab仿真

实验五-CDMA原理的matlab仿真

实验二 CDMA 原理的程序仿真实验目的:了解3G 移动通信网中关键技术CDMA 的实现原理 掌握matlab 编程,实现CDMA 原理仿真实验要求:掌握CDMA 原理掌握matlab 语言对于码分复用技术仿真的功能实验场景: 现有8个用户,通过信令两两建立连接通道,分别为发送方A 、B 、C 、D ,对应的接收方为A ’、B ’、C ’、D ’,A 和A ’的通信内容为-1,B 和B ’的通信内容为-1,C 和C ’的通信内容为1,D 和D ’的通信内容为1。

系统内具备以下条件:A 和A ’通信的正交码为H1: 1 1 1 1B 和B ’通信的正交码为H2: 1 -1 1 -1C 和C ’通信的正交码为H3: 1 1 -1 -1D 和D ’通信的正交码为H4: 1 -1 -1 1H1~H4具有正交性,比如[1 1 1 1]和[1 -1 1 -1]向量乘一下,为0,每两个不同的向量都这样,只有本身相乘是有值的。

发送过程信道ABC D-1-111相乘-1,-1,-1,-1, 1, 1, 1 1 1 1 1码 数据 1 -1 1 -1 1 1 -1 -11 -1 -1 1-1,-1,-1,--1,-1,-1,-1,-1, 1, -1,1, -1, 11, 1, 1, 1 1,1, 1,1,-1,-11, 1, 1, 1 1,-1,1,-1,-1,10,0,-4,0扩展相加每一个人对接收到的数据用自己的码进行译码,得到不同的结果,和发送的数据相同。

也就是说拥有不同的码,即使在同频率下相互干扰,信号叠加在一起,也能正确的得到各自想要的信息,这样很多人的都可以使用相同的频率,大大增加了通信容量实验参考知识: (1) 哈达马正交矩阵 方法为:hadamard(n)例如:运行hadamard(4),得到4*4矩阵:[ 1 1 1 1; 1 -1 1 -1; 1 -1 -1; 1 -1 -1 1](2) 整体代码 %发送部分d_o = round(rand(1,4))';d = 2*d_o - 1; %发送数据a->a': -1, b->b': -1 ...%正交码阵H =[ 1 1 1 1; 1 -1 1 -1; 1 1 -1 -1; 1 -1 -1 1 ] H = hadamard(4);d_t = repmat(d,1,4); %扩展数据 c_t = H.*d_t; %对应相乘 c = sum(c_t); %形成码字 %接收部分c_r = repmat(c,4,1).*H; %码字 e = mean(c_r,2); %接受数据figure(1) %显示发送和接受数据,比较是否相同 subplot(2,1,1); stem(d); subplot(2,1,2); stem(e);任务: (1) 修改发送数据,运行程序,观察发送数据和接受数据是否相同;给出过程。

基于MATLAB的CDMA系统RAKE接收机仿真分析

基于MATLAB的CDMA系统RAKE接收机仿真分析

基于MATLAB的CDMA系统RAKE接收机仿真分析CDMA(Code Division Multiple Access)是一种广泛应用于移动通信系统中的多址技术,其中RAKE接收机是一种常用于CDMA系统中的接收机。

在这篇文章中,我们将讨论基于MATLAB的CDMA系统中RAKE接收机的仿真分析。

首先,我们要理解什么是CDMA系统和RAKE接收机。

CDMA系统是一种用于无线通信的多址技术,它允许多个用户同时在相同频带上进行通信,通过使用不同的扩频码将用户之间的通信进行区分。

CDMA系统具有很好的抗干扰性能和较高的频谱利用率,因此被广泛使用于移动通信领域。

RAKE接收机是一种用于CDMA系统中信号接收的技术,它通过采用多个接收分支来接收和合并从不同路径到达的信号,以提高接收信号的质量。

RAKE接收机通常使用一个或多个强旗手路径来提取信号的多径分支,然后将这些分支合并以获得更好的信号质量。

现在,我们将讨论如何使用MATLAB进行CDMA系统中RAKE接收机的仿真分析。

首先,我们需要定义CDMA系统的参数。

这些参数包括扩频码、码片持续时间、符号持续时间、发射功率等。

我们可以使用MATLAB中的变量来定义这些参数。

接下来,我们需要生成CDMA系统中的发送信号。

我们可以使用MATLAB中的随机函数生成多个用户的发送信号,并使用对应的扩频码将其展开。

然后,我们可以将这些发送信号叠加在一起,并将它们传输到信道中。

然后,我们需要建立CDMA系统的信道模型。

在仿真中,我们可以使用MATLAB中的函数来模拟信道的特性,如多径传播和噪声。

我们可以使用瑞利衰落信道模型来模拟多径传播,并将高斯白噪声添加到接收信号中。

接着,我们可以实现RAKE接收机。

在MATLAB中,我们可以使用函数或自定义算法来实现RAKE接收机的功能。

首先,我们需要将接收信号传输到RAKE接收机中的各个分支。

然后,我们可以使用相关器来检测这些分支中的信号,并选择最强的分支作为接收信号的输出。

基于Matlab的CDMA通信系...

基于Matlab的CDMA通信系...

基于Matlab的CDMA通信系统的仿真北方工业大学本科毕业论文摘要CDMA(Code Divisio n Multip le Access)又称码分多址,是在无线通信上的使用技术,更是第三代移动通信的核心技术。

CDMA技术早在第二次世界大战期间因战争的需要而研究开发,但长期以来一直被用于军事领域,直到近些年才开始用于民用领域,在中国,也就是近几年刚开始盛行。

目前,实现第三代蜂窝网(通称3G)目标的方案主要有3种,即欧洲提出的W-CDMA,美国提出的CDMA2000,和我国提出的TD-SCDMA。

它们的共同特点是都采用了码分多址(CDMA)技术。

码分多址包含两种基本技术:一是码分技术,其基础是扩频技术;二是多址技术。

扩频技术优点很多,比如能够提高抗窄带干扰的能力、将信号藏在噪声中,防窃听、能使多个用户共用同一频带等等。

在我国,CDMA正处于刚刚盛行阶段,市场前景非常广阔,因此,CDMA是一个非常有研究价值的课题。

通过使用Matlab仿真CDMA 了解其原理,为以后继续学习CDMA或从事相关职业打下坚实的基础。

本课题主要研究内容包括:将两路信号扩频后混合在一起,调制解调,加入噪声,最后通过一定方法将两路信号分离出来,使误码率尽量小,通过波形、频谱图等,对系统进行了性能分析,并作了进一步改进与调试。

仿真结果证明了整个设计系统的正确性。

关键词:CDMA;扩频;matlab仿真The analysis and simulation of communication system based on MatlabAbstractA techno lo gy in wireless co mmunicatio n was called Code Divisio n Multip le Access(Referred to CDMA) and it is the Core techno logy in 3G.CDMA techno lo gy was developed During Wo rld War II for the need of war. But it has been used in the military areas for a lo ng time and was used in civilian areas until resent years. In china, it is in a few years that this techno lo gy began to thrive.At present, there are three methods to imp lement CDMA techno lo gy: W-CDMA p ut forward by Europe, CDMA2000 p ut forward b y America and TD-SCDMA p ut forward b y China. The co mmo n feature o f these three techno lo gies is CDMA.In fact, CDMA is co mposed o f two techno logies: CD and MA. The former is based o n spread spectrum which has many ad vantages such as the ab ility to impro ve the suppressio n o f narrowband interference,hid ing signals in the back gro und no ise, the preventio n o f informatio n eavesdropp ing,enab ling many users to use one freq uency band and so on.At our country, the market prospects o f CDMA are very bright just because o f the beginning o f its prevailing .As result, this techno lo gy is anissue deserved to research. By grasp ing the basic theory of it thro ugh simulating CDMA via Matlab, I can lay the fo undatio n for stud ying it deeper later.This paper includes the fo llowing contents: spread spectrum, mingling two signals, modulatio n, demod ulatio n, add ing no ise, separating the two signals, minimizing error rate. Analyse performance thro ugh wavefo rm, spectrum scope and mak ing a further impro vement. The simulatio n result pro ves the correctness o f this designed system.Key words: CDMA, spread spectrum, Matlab simulatio n目录1.绪论 (1)1.1 课题背景介绍 (1)1.2 国外CDMA技术的发展状况 (1)1.3 中国CDMA技术发展状况 (2)1.4 课题现阶段发展状况 (2)2. CDMA系统理论介绍 (4)2.1 模拟,数字通信系统 (4)2.1.1 模拟通信系统 (4)2.1.2 数字通信系统 (4)2.2 数字调制解调 (6)2.2.1 ASK介绍 (6)2.2.2 QPSK介绍 (10)2.2.3 同步 (12)2.3 信道中的噪声及信噪比 (15)2.3.1 信道中的噪声 (15)2.3.2信噪比 (16)2.4 伪随机码 (16)2.5 码组正交 (16)2.6 扩频技术介绍 (19)2.6.1 扩频理论介绍 (19)2.6.2 扩频系统的分类 (20)2.7 仿真整体框图 (24)2.8 FDMA,TDMA,CDMA比较 (25)3. CDMA系统的Matlab仿真 (27)3.1 仿真软件介绍 (27)3.1.1 Matlab综述 (27)3.1.2 simulink (28)3.2 通信仿真综述 (28)3.3 信源及扩频部分仿真 (29)3.4 调制及信道部分仿真 (33)3.5 解调部分仿真 (39)3.6 解扩部分仿真 (40)3.7 抽样判决部分仿真 (42)3.8 频谱图、误码计算、仿真总图 (47)结论 (51)致谢 (52)参考文献 (53)外文文献及翻译 (54)1 绪论1.1课题背景介绍CDM A技术的出现源自于人类对更高质量无线通信的需求。

cdma的MATLAB仿真源程序文件

cdma的MATLAB仿真源程序文件

%****************************************************************************** *******% This function pertains to the addition of AWGN with mean zero and% parameter 'variance' to an input signal.%% AUTHOR: Wenbin Luo% DATE : 04/12/01%% SYNOPSIS: y = awgn(x,var)% x ---> input signal% var ---> variance% y ---> y = x + AWGN%****************************************************************************** *****function y = awgn(x,var)w = randn(1,length(x));w = w - mean(w)*ones(size(w));w = sqrt(var)*(w / std(w));x = x(:);w = w(:);y = x + w;%****************************************************************************** *******% This function does the DS-SS modulation%% AUTHOR: Wenbin Luo% DATE : 04/28/01%% SYNOPSIS: y = ds_mod(c,x)% c ---> user code (column vector)% x ---> input signal (row vector)% y ---> tmp = c*x, y = tmp(:) (ds-ss modulated signal, column vector)%****************************************************************************** *****function y = ds_mod(c,x)tmp = c*x;y = tmp(:);%****************************************************************************** *******% This function generates random +1/-1 sequence with independent identically% distributed symbols%% AUTHOR: Wenbin Luo% DATE : 04/28/01%% SYNOPSIS: x = bingen(L)% L ---> number of random symbols%****************************************************************************** *****function x = bingen(L)%generate L symbols randomly with value +1 or -1x = rand(1,L);x(find(x<0.5)) = -1;x(find(x >=0.5)) = 1;%****************************************************************************** *******% This function does the DS-SS modulation%% AUTHOR: Wenbin Luo% DATE : 04/28/01%% SYNOPSIS: x = ds_demod(c,y)% c ---> user code (column vector)% y ---> tmp = c*x, y = tmp(:) (ds-ss modulated signal, column vector)% x ---> input signal (row vector)%****************************************************************************** *****function x = ds_demod(c,y)tmp = reshape(y, length(c), length(y)/length(c));tmp = tmp';%x is a column vectorx = tmp * c;% convert to row vectorx = x';%****************************************************************************** *******% This function does the DS-SS modulation%% AUTHOR: Wenbin Luo% DATE : 04/28/01%% SYNOPSIS: y = ds_mod(c,x)% c ---> user code (column vector)% x ---> input signal (row vector)% y ---> tmp = c*x, y = tmp(:) (ds-ss modulated signal, column vector)%****************************************************************************** *****function y = ds_mod(c,x)tmp = c*x;y = tmp(:);%***********************************************************% This mfunction generates faded envelope and phase% corresponding to Rayleigh fading%% AUTHOR: Wenbin Luo% DATE : 04/27/01%% FUNCTION SYNOPSIS:% [env,phi] = fade(L,para)%% Parameter Description:% L : number of samples needed% variance : variance%********************************************************** function [env,phi] = fade(L,variance)% Error checkif variance <= 0error('Positive variance needed')elseif nargin ~= 2error('Insufficient input parameters')end% Generate bivariate Gaussian uncorrelated% random variablesmu = zeros(1,2);C = variance*eye(2,2);r = mvnrnd(mu,C,L);% Convert to polar coordinates and compute% magnitude and phasez = r(:,1) + j*r(:,2);env = abs(z); phi = angle(z);%********************************************************** %*********************************************************** % This mfunction generates two channels of faded% envelope and phase corresponding to% Rayleigh fading%% AUTHOR: Wenbin Luo% DATE : 04/27/01%% FUNCTION SYNOPSIS:% [env,phi] = fade_diversity(L,para)%% Parameter Description:% L : number of samples needed% variance : variance%********************************************************** function [env1,env2] = fade_diversity(L,variance)% Error checkif variance <= 0error('Positive variance needed')elseif nargin ~= 2error('Insufficient input parameters')end% Generate bivariate Gaussian uncorrelated% random variablesmu = zeros(1,4);C = variance*eye(4,4);r = mvnrnd(mu,C,L);% Convert to polar coordinates and compute% magnitude and phasez1 = r(:,1) + j*r(:,2);z2 = r(:,3) + j*r(:,4);env1 = abs(z1);env2 = abs(z2);%********************************************************** %*********************************************************** % This mfunction generates frequency selective% Rayleigh fading%% AUTHOR: Wenbin Luo% DATE : 05/02/01%% FUNCTION SYNOPSIS:% y = fade_fs(x,L)%% Parameter Description:% y : output signal% x : input signal% L : number of independent Rayleigh% fading process%********************************************************** function y = fade_fs(x,L)% Generate bivariate Gaussian uncorrelated% random variablestmp1 = 0:1:(L-1);tmp1 = exp(-tmp1);tmp(1:2:2*L-1) = tmp1;tmp(2:2:2*L) = tmp1;mu = zeros(1,2*L);C = 0.5*diag(tmp);x_len = length(x);r = mvnrnd(mu,C,x_len);% Convert to polar coordinates and compute magnitudex = x(:);y = zeros(x_len,1);for i = 1:L,z = r(:,2*i-1) + j*r(:,2*i);env = abs(z); %phi = angle(z);tmp_y = env.*x;tmp_y = [zeros(i-1,1); tmp_y(1:x_len-i+1)];y = y + tmp_y;end%**********************************************************%********************************************************************** % This program computes the average BER of a DS-SS/BPSK% communication system with binary BCH code in the AWGN channel %% AUTHOR: Wenbin Luo% DATE : 04/28/01%% final11_extra.m%%********************************************************************** %function Plot_Pe = final11_extra()clear all;%close all;format long;%set up the threshold VtVt = 0;Plot_Pe = [];N = 16;x_num = 2500;plot_EbNo = -20:2:10;for EbNo = -20:2:10,%convert back from dBEb_No = EbNo; %dBEb_No = 10.^(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%generate BPSK symbols randomly with value +1 or -1 x = bingen(x_num);x_org = x;%adds error-correcting codeenc_N = 15; enc_K = 5; %7/4 or 15/5x(find(x < 0)) = 0;x = encode(x,enc_N,enc_K,'bch');x = x';x(find(x == 0)) = -1;%DS-SS modulate symbols with user codec = bingen(N);y = ds_mod(c(:),x);%scale by appropriate power factory = sqrt(p)*y;%add AWGN to signaly = awgn(y,1);%DS-SS demodulate symbols with user codex_de = ds_demod(c(:),y);%decisionx_de(find(x_de < 0)) = -1;x_de(find(x_de >=0)) = 1;%decode error-correcting codex_de(find(x_de < 0)) = 0;x_de = decode(x_de,enc_N,enc_K,'bch');x_de = x_de';x_de(find(x_de == 0)) = -1;%-------------------------------------Pe = length(find(x_org - x_de))/x_num;Plot_Pe = [Plot_Pe Pe];end %end for EbNo%--------------------------------------------- %return;%---------------------------------------------%display the calculated Pd and PfaPlot_Pe%plot Pe versus Eb/Nosemilogy(plot_EbNo,Plot_Pe,'bo-')xlabel('Eb/No (dB)')ylabel('BER')s=sprintf('BER versus Eb/No with binary BCH code in the AWGN channel'); title(s);%********************************************************************** % This program computes the average BER of a DS-SS/BPSK% communication system with binary BCH code in the AWGN channel %% AUTHOR: Wenbin Luo% DATE : 04/28/01%% final11_extra.m%%********************************************************************** %function Plot_Pe = final11_extra()clear all;%close all;format long;%set up the threshold VtVt = 0;Plot_Pe = [];N = 16;x_num = 2500;plot_EbNo = -20:2:10;for EbNo = -20:2:10,%convert back from dBEb_No = EbNo; %dBEb_No = 10.^(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%generate BPSK symbols randomly with value +1 or -1x = bingen(x_num);x_org = x;%adds error-correcting codeenc_N = 15; enc_K = 5; %7/4 or 15/5x(find(x < 0)) = 0;x = encode(x,enc_N,enc_K,'bch');x = x';x(find(x == 0)) = -1;%DS-SS modulate symbols with user codec = bingen(N);y = ds_mod(c(:),x);%scale by appropriate power factory = sqrt(p)*y;%add AWGN to signaly = awgn(y,1);%DS-SS demodulate symbols with user code x_de = ds_demod(c(:),y);%decisionx_de(find(x_de < 0)) = -1;x_de(find(x_de >=0)) = 1;%decode error-correcting codex_de(find(x_de < 0)) = 0;x_de = decode(x_de,enc_N,enc_K,'bch');x_de = x_de';x_de(find(x_de == 0)) = -1;%-------------------------------------Pe = length(find(x_org - x_de))/x_num;Plot_Pe = [Plot_Pe Pe];end %end for EbNo%---------------------------------------------%return;%---------------------------------------------%display the calculated Pd and PfaPlot_Pe%plot Pe versus Eb/Nosemilogy(plot_EbNo,Plot_Pe,'bo-')xlabel('Eb/No (dB)')ylabel('BER')s=sprintf('BER versus Eb/No with binary BCH code in the AWGN channel');title(s);%********************************************************************** % This program computes the average BER of a DS-SS/BPSK% communication system with binary BCH code in the AWGN channel %% AUTHOR: Wenbin Luo% DATE : 04/28/01%% final11_extra.m%%********************************************************************** %function Plot_Pe = final11_extra()clear all;%close all;format long;%set up the threshold VtVt = 0;Plot_Pe = [];N = 16;x_num = 2500;plot_EbNo = -20:2:10;for EbNo = -20:2:10,%convert back from dBEb_No = EbNo; %dBEb_No = 10.^(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%generate BPSK symbols randomly with value +1 or -1 x = bingen(x_num);x_org = x;%adds error-correcting codeenc_N = 15; enc_K = 5; %7/4 or 15/5x(find(x < 0)) = 0;x = encode(x,enc_N,enc_K,'bch');x = x';x(find(x == 0)) = -1;%DS-SS modulate symbols with user codec = bingen(N);y = ds_mod(c(:),x);%scale by appropriate power factory = sqrt(p)*y;%add AWGN to signaly = awgn(y,1);%DS-SS demodulate symbols with user code x_de = ds_demod(c(:),y);%decisionx_de(find(x_de < 0)) = -1;x_de(find(x_de >=0)) = 1;%decode error-correcting codex_de(find(x_de < 0)) = 0;x_de = decode(x_de,enc_N,enc_K,'bch');x_de = x_de';x_de(find(x_de == 0)) = -1;%-------------------------------------Pe = length(find(x_org - x_de))/x_num;Plot_Pe = [Plot_Pe Pe];end %end for EbNo%---------------------------------------------%return;%---------------------------------------------%display the calculated Pd and PfaPlot_Pe%plot Pe versus Eb/Nosemilogy(plot_EbNo,Plot_Pe,'bo-')xlabel('Eb/No (dB)')ylabel('BER')s=sprintf('BER versus Eb/No with binary BCH code in the AWGN channel'); title(s);%********************************************************************* % This program computes the average BER of a DS-SS/BPSK% communication system in the presence of pulsed noise jamming % and AWGN%% AUTHOR: Wenbin Luo% DATE : 04/28/01%% final12.m%%******************************************************************** %function Plot_Pe = final12()clear all;%close all;format long;%set up the threshold VtVt = 0;Plot_Pe = [];N = 16;ro = 0.2; %1, 0.4, 0.2x_num = 10000;plot_EbNo = -20:2:10;for EbNo = -20:2:10,%convert back from dBEb_No = EbNo; %dBEb_No = 10.^(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%generate BPSK symbols randomly with value +1 or -1x = bingen(x_num);%DS-SS modulate symbols with user codec = bingen(N);y = ds_mod(c(:),x);%scale by appropriate power factory = sqrt(p)*y;%add Pulsed Noise Jammer to signaly = [awgn(y(1:ro*length(y)),1/ro); y((ro*length(y)+1):length(y))];%DS-SS demodulate symbols with user codex_de = ds_demod(c(:),y);%decisionx_de(find(x_de < 0)) = -1;x_de(find(x_de >=0)) = 1;Pe = length(find(x - x_de))/x_num;Plot_Pe = [Plot_Pe Pe];end %end for EbNo%---------------------------------------------%return;%---------------------------------------------%display the calculated Pd and PfaPlot_Pe%plot Pe versus Eb/No%subplot(2,1,1)semilogy(plot_EbNo,Plot_Pe,'m*-')xlabel('10log_{10}[(P/J)(W/R)] (dB)')ylabel('BER')s=sprintf('BER versus 10log_{10}[(P/J)(W/R)] in pulsed noise jamming and AWGN'); title(s);%*********************************************************************% This program computes the average BER of a DS-SS/BPSK% communication system in barrage noise jamming and AWGN%% AUTHOR: Wenbin Luo% DATE : 05/02/01%% final12_extra.m%%******************************************************************** % function Plot_Pe = final12_extra()clear all;%close all;format long;%set up the threshold VtVt = 0;Plot_Pe = [];N = 16;x_num = 10000;%----------------------------------------------------------%convert back from dBEb_No = 5; % 2, 4, 6 dBEb_No = 10.^(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%----------------------------------------------------------plot_EbNj = 0:2:50;for EbNj = 0:2:50,%convert back from dBEb_Nj = EbNj; %dBEb_Nj = 10.^(Eb_Nj/10);Nj = Eb / Eb_Nj;%generate BPSK symbols randomly with value +1 or -1x = bingen(x_num);%DS-SS modulate symbols with user codec = bingen(N);y = ds_mod(c(:),x);%scale by appropriate power factory = sqrt(p)*y;%add barrage noise jamming and AWGN to signal y = awgn(y,(Nj/2)+1);%y = awgn(y,1);%DS-SS demodulate symbols with user codex_de = ds_demod(c(:),y);%decisionx_de(find(x_de < 0)) = -1;x_de(find(x_de >=0)) = 1;Pe = length(find(x - x_de))/x_num;Plot_Pe = [Plot_Pe Pe];end %end for EbNo%--------------------------------------------- %return;%---------------------------------------------%display the calculated Pd and PfaPlot_Pe%plot Pe versus Eb/No%subplot(2,1,1)semilogy(plot_EbNj,Plot_Pe,'m*-')xlabel('10log_{10}[(P/J)(W/R)] (dB)')ylabel('BER')s=sprintf('BER versus 10log_{10}[(P/J)(W/R)] in barrage noise jamming and AWGN'); title(s);grid on;%*********************************************************************% This program computes the average BER in Rayleigh fading% and AWGN%% AUTHOR: Wenbin Luo% DATE : 04/28/01%% final21.m%%********************************************************************%function Plot_Pe = final21()clear all;%close all;format long;%set up the threshold VtVt = 0;Plot_Pe = [];N = 16;x_num = 10000;plot_EbNo = -30:2:30; %-20:2:10;for EbNo = -30:2:30,%convert back from dBEb_No = EbNo; %dBEb_No = 10.^(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%generate BPSK symbols randomly with value +1 or -1 x = bingen(x_num);x_original = x;x = sqrt(p)*x;%generate Rayleigh fading[env,phi] = fade(length(x),0.5);%generate faded sequencex = env.*x';x = x';%DS-SS modulate symbols with user codec = bingen(N);y = ds_mod(c(:),x);%scale by appropriate power factor%y = sqrt(p)*y;%add AWGN to signaly = awgn(y,1);%DS-SS demodulate symbols with user codex_de = ds_demod(c(:),y);%decisionx_de(find(x_de < 0)) = -1;x_de(find(x_de >=0)) = 1;Pe = length(find(x_original - x_de))/x_num; Plot_Pe = [Plot_Pe Pe];end %end for EbNo%---------------------------------------------%return;%---------------------------------------------%display the calculated Pd and PfaPlot_Pe%plot Pe versus Eb/No%subplot(2,1,1)semilogy(plot_EbNo,Plot_Pe,'r^-')xlabel('Eb/No (dB)')ylabel('BER')s=sprintf('BER versus Eb/No in Rayleigh fading and AWGN');title(s);grid on;%********************************************************************* % This program simulates a predetection selective combining% receiver for a Rayleigh fading channel%% AUTHOR: Wenbin Luo% DATE : 04/28/01%% final21_extra.m%%********************************************************************clear all;%close all;format long;%set up the threshold VtVt = 0;Plot_Pe = [];N = 16;x_num = 10000;plot_EbNo = -30:2:20; %-20:2:10;for EbNo = -30:2:20,%convert back from dBEb_No = EbNo; %dBEb_No = 10.^(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%generate BPSK symbols randomly with value +1 or -1 x = bingen(x_num);x_original = x;x = sqrt(p)*x;%generate Rayleigh fading[env1,env2] = fade_diversity(length(x),0.5);%generate faded sequencex_fad1 = env1.*x';x_fad1 = x_fad1';x_fad2 = env2.*x';x_fad2 = x_fad2';%DS-SS modulate symbols with user codec = bingen(N);y_fad1 = ds_mod(c(:),x_fad1);y_fad2 = ds_mod(c(:),x_fad2);%scale by appropriate power factor%y = sqrt(p)*y;%add AWGN to signaly_fad1 = awgn(y_fad1,1);y_fad2 = awgn(y_fad2,1);%DS-SS demodulate symbols with user codex_de1 = ds_demod(c(:),y_fad1);x_de2 = ds_demod(c(:),y_fad2);%choose branch with larger BENRind1 = find(abs(x_de1) >= abs(x_de2));ind2 = find(abs(x_de1) < abs(x_de2));x_de(ind1) = x_de1(ind1);x_de(ind2) = x_de2(ind2);%decisionx_de(find(x_de < 0)) = -1;x_de(find(x_de >=0)) = 1;Pe = length(find(x_original - x_de))/x_num; Plot_Pe = [Plot_Pe Pe];end %end for EbNo%display the calculated Pd and PfaPlot_Pe%plot Pe versus Eb/No%subplot(2,1,1)semilogy(plot_EbNo,Plot_Pe,'ro-')xlabel('Eb/No (dB)')ylabel('BER')s=sprintf('BER versus Eb/No in Rayleigh fading and AWGN');title(s);grid on;%********************************************************************* % This program computes the average BER in Rayleigh fading% and AWGN%% AUTHOR: Wenbin Luo% DATE : 04/28/01%% final22.m%%********************************************************************clear all;%close all;format long;%set up the threshold VtVt = 0;Plot_Pe = [];N = 16;x_num = 10000;plot_EbNo = -20:2:30; %-20:2:10;for EbNo = -20:2:30,%convert back from dBEb_No = EbNo; %dBEb_No = 10.^(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%generate BPSK symbols randomly with value +1 or -1 x = bingen(x_num);x_original = x;x = sqrt(p)*x;%generate frequency selective Rayleigh fading tmp = fade_fs(x,7);x = tmp';%DS-SS modulate symbols with user codec = bingen(N);y = ds_mod(c(:),x);%scale by appropriate power factor%y = sqrt(p)*y;%add AWGN to signaly = awgn(y,1);%DS-SS demodulate symbols with user codex_de = ds_demod(c(:),y);%decisionx_de(find(x_de < 0)) = -1;x_de(find(x_de >=0)) = 1;Pe = length(find(x_original - x_de))/x_num; Plot_Pe = [Plot_Pe Pe];end %end for EbNo%display the calculated Pd and PfaPlot_Pe%plot Pe versus Eb/No%subplot(2,1,1)semilogy(plot_EbNo,Plot_Pe,'r*-')xlabel('Eb/No (dB)')ylabel('BER')s=sprintf('BER versus Eb/No in Rayleigh fading and AWGN');title(s);grid on;%********************************************************************* % This program computes the average BER versus Eb/No of K users % transmitting BPSK symbols at an equal power level using a % DS-CDMA scheme assumming perfect synchronism and orthogonal % codes in AWGN%% AUTHOR: Wenbin Luo% DATE : 04/29/01%% final31.m%%********************************************************************clear all;%close all;format long;%set up the threshold Vt Vt = 0;Plot_Pe = [];K = 16;N = 32;x_num = 5000;plot_EbNo = -20:3:10;for EbNo = -20:3:10,%convert back from dBEb_No = EbNo; %dBEb_No = 10.^(Eb_No/10); %assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%generate BPSK symbols randomly with value +1 or -1 x = bingen(x_num);%DS-SS modulate symbols with user codeUserCode = hadamard(N);c = UserCode(1,:);y = ds_mod(c(:),x);%add other users' signal as interferencefor t = 2:1:K,tmp_x = bingen(x_num);tmp = UserCode(t,:);tmp_y = ds_mod(tmp(:),tmp_x);y = y + tmp_y;end % t%scale by appropriate power factory = sqrt(p)*y;%add AWGN to signaly = awgn(y,1);%DS-SS demodulate symbols with user codex_de = ds_demod(c(:),y);%decisionx_de(find(x_de < 0)) = -1;x_de(find(x_de >=0)) = 1;Pe = length(find(x - x_de))/x_num;Plot_Pe = [Plot_Pe Pe];end %end for EbNo%display the calculated Pd and PfaPlot_Pe%plot Pe versus Eb/No%subplot(2,1,1)semilogy(plot_EbNo,Plot_Pe,'m*-')xlabel('Eb/No (dB)')ylabel('BER')title('BER versus Eb/No using DS-CDMA: perfect synchronism between users'); grid on;%**********************************************************************% This program computes the average BER versus Eb/No of K users% transmitting BPSK symbols at an equal power level using a% slow FH-MA scheme assumming perfect synchronism and orthogonal % codes in AWGN%% AUTHOR: Wenbin Luo% DATE : 05/01/01%% final31_fh.m%%*********************************************************************clear all;%close all;format long;%set up the threshold VtVt = 0;Plot_Pe = [];K = 16; %4,8,16N = 32;x_num = 5000;plot_EbNo = -20:3:10;for EbNo = -20:3:10,%convert back from dBEb_No = EbNo; %dBEb_No = 10.^(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%generate BPSK symbols randomly with value +1 or -1 x = bingen(x_num);%DS-SS modulate symbols with user codeUserCode = fh(N,K);c = UserCode(1,:);y = ds_mod(c(:),x);%add other users' signal as interferencefor t = 2:1:K,tmp_x = bingen(x_num);tmp = UserCode(t,:);tmp_y = ds_mod(tmp(:),tmp_x);y = y + tmp_y;end % t%scale by appropriate power factory = sqrt(p)*y;%add AWGN to signaly = awgn_complex(y,1);%DS-SS demodulate symbols with user codex_de = real(ds_demod(conj(c(:)),y));%decisionx_de(find(x_de < 0)) = -1;x_de(find(x_de >=0)) = 1;Pe = length(find(x - x_de))/x_num;Plot_Pe = [Plot_Pe Pe];end %end for EbNo%display the calculated Pd and PfaPlot_Pe%plot Pe versus Eb/No%subplot(2,1,1)semilogy(plot_EbNo,Plot_Pe,'m*-')xlabel('Eb/No (dB)')ylabel('BER')title('BER versus Eb/No using slow FH-MA: perfect synchronism between users');grid on;%********************************************************************* % This program computes the average BER versus Eb/No of K users % transmitting BPSK symbols at an equal power level using a % DS-CDMA scheme assumming a random asynchronism between users %% AUTHOR: Wenbin Luo% DATE : 04/29/01%% final32.m%%********************************************************************clear all;%close all;format long;%set up the threshold VtVt = 0;Plot_Pe = [];K = 4;N = 32;x_num = 30000;%generates a random asynchronism between usersasyn = rand(1,K)*6;%asyn = floor(asyn);asyn = floor(asyn) + 1;plot_EbNo = -20:3:50;for EbNo = -20:3:50,%convert back from dBEb_No = EbNo; %dBEb_No = 10.^(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%generate BPSK symbols randomly with value +1 or -1 x = bingen(x_num);%DS-SS modulate symbols with user codeUserCode = hadamard(N);c = UserCode(1,:);y = ds_mod(c(:),x);%add other users' signal as interferencefor t = 2:1:K,tmp_x = bingen(x_num);tmp = UserCode(t,:);tmp_y = ds_mod(tmp(:),tmp_x);tmpY_len = length(tmp_y);tmp_y = [tmp_y((asyn(t)+1):tmpY_len); tmp_y(1:asyn(t))];y = y + tmp_y;end % t%scale by appropriate power factory = sqrt(p)*y;%add AWGN to signaly = awgn(y,1);%DS-SS demodulate symbols with user codex_de = ds_demod(c(:),y);%decisionx_de(find(x_de < 0)) = -1;x_de(find(x_de >=0)) = 1;Pe = length(find(x - x_de))/x_num;Plot_Pe = [Plot_Pe Pe];end %end for EbNo%display the calculated Pd and PfaPlot_Pe%plot Pe versus Eb/No%subplot(2,1,1)semilogy(plot_EbNo,Plot_Pe,'bs-')xlabel('Eb/No (dB)')ylabel('BER')title('BER versus Eb/No using DS-CDMA: a random asynchronism between users'); grid on;%************************************************************************% This program computes the average BER versus Eb/No of K users% transmitting BPSK symbols at an equal power level using a% slow FH-MA scheme assumming a random asynchronism between users %% AUTHOR: Wenbin Luo% DATE : 04/29/01%% final32_fh.m%%************************************************************************clear all;%close all;format long;%set up the threshold VtVt = 0;Plot_Pe = [];K = 32;N = 32;x_num = 10000;%generates a random asynchronism between usersasyn = rand(1,K)*6;%asyn = floor(asyn);asyn = floor(asyn) + 1;plot_EbNo = -20:3:50;for EbNo = -20:3:50,%convert back from dBEb_No = EbNo; %dBEb_No = 10.^(Eb_No/10);%assume No = 2;No = 2;Eb = No * Eb_No;%calculate power pTc = 1;Ts = N * Tc;p = Eb / Ts;%generate BPSK symbols randomly with value +1 or -1 x = bingen(x_num);%DS-SS modulate symbols with user codeUserCode = fh(N,K);c = UserCode(1,:);y = ds_mod(c(:),x);%add other users' signal as interferencefor t = 2:1:K,tmp_x = bingen(x_num);tmp = UserCode(t,:);tmp_y = ds_mod(tmp(:),tmp_x);tmpY_len = length(tmp_y);tmp_y = [tmp_y((asyn(t)+1):tmpY_len); tmp_y(1:asyn(t))];y = y + tmp_y;end % t%scale by appropriate power factory = sqrt(p)*y;%add AWGN to signaly = awgn_complex(y,1);%DS-SS demodulate symbols with user codex_de = real(ds_demod(conj(c(:)),y));%decisionx_de(find(x_de < 0)) = -1;x_de(find(x_de >=0)) = 1;Pe = length(find(x - x_de))/x_num;Plot_Pe = [Plot_Pe Pe];end %end for EbNo%display the calculated Pd and PfaPlot_Pe。

无线网络功率控制算法研究及其MATLAB仿真 陈光剑

无线网络功率控制算法研究及其MATLAB仿真  陈光剑

无线网络功率控制算法研究南京邮电大学自动化学院陈光剑B06050621摘要本文主要研究了基于Smith预估滤波器的CDMA无线通信系统功率控制问题。

在这个问题中我们利用Smith预估器来补偿往返路径时延;通过使用遗传算法,设滤波器,使得接受到的信干比与目标信干比之间的差最小。

计出固定阶鲁棒H∞给出了仿真结果,以验证该方法的性能。

关键词遗传算法(GA),H滤波器,功率控制,Smith预估器,路径时延补∞偿一引言无线通信网络中的功率控制是用以解决信道衰减和干扰效应问题的,从而为用户提供更高质量的通信,同时可以获得更大的系统容量。

功率控制的主要思想是在尽量减少干扰和信道衰减的影响下,调整每个基地的发射功率,同时保证通信质量。

在过去的十年中,由于对无线通信网络的大量需求,针对功率控制问题人们进行了大量的研究。

由于不完全正交扩频码, MAI可能会出现在DS - CDMA系统,对用户发送的功率必须加以控制,以减少多址干扰并保持通信质量。

近年来,自动控制理论已经成功地应用于各种功率控制问题研究。

为了弥补往返延迟,采用Smith预估器功率控制方案无疑是首选。

在本文中,我们将提出一个功率控制器设计。

为了使信干比跟踪误差最小,我们基于遗传算法的固定阶H∞从最优化的观点开发出了一个固定阶功率控制器。

我们采用的是遗传算法(GA)解决此最优化问题。

该文的其余部分组织如下。

功率控制回路的说明在第二节。

带有Smith预估器基于遗传算法的固定阶H功率控制器设计在第三节进行了讨论。

在第四节,MATLAB∞仿真以及该方法的优越性能与其他功率控制方案的比较。

最后,结论和讨论在第五节.二 . 功率控制环路考虑如图1所示闭环功率控制系统。

在接收端,有四个主要组成部分相关的功率控制回路,即一个信噪比测量电路,信噪比比较器,控制器C(z),和采样量化器.目标信噪比t(k)和实测信噪比y(k)之差就是跟踪误差e (k ),e(k)是控制器C(z)的输入,用来产生输出功率u(k), 即()()()()()()e k t k y k u k C z e k =-= (1)其中功率控制更新命令u(k)是控制器C(z)的输出,将被送入量化器. 量化是用于生成功率控制比特更新命令,然后通过反馈信道传送到移动站。

具有时变时滞的CDMA自适应功率控制及其MATLAB仿真

具有时变时滞的CDMA自适应功率控制及其MATLAB仿真

具有时变时滞的CDMA自适应功率控制及其MATLAB仿真摘要:CDMA(Code Division Multiple Access)是一种常用的无线通信技术,功率控制是保证系统性能的重要环节。

然而,由于无线信道的复杂性和时变时滞的存在,传统的CDMA功率控制方法在实际应用中存在一定的局限性。

本文针对具有时变时滞的CDMA系统,提出了一种自适应功率控制算法,并利用MATLAB进行仿真验证。

关键词:CDMA,自适应功率控制,时变时滞,MATLAB仿真引言:随着无线通信技术的快速发展,CDMA作为一种广泛应用的多址技术,在无线通信领域得到了广泛的应用。

功率控制是CDMA系统中保证通信质量和系统容量的关键技术之一。

然而,由于无线信道的复杂性和时变时滞的存在,传统的CDMA功率控制方法存在一定的局限性。

因此,研究具有时变时滞的CDMA自适应功率控制算法具有重要意义。

方法:本文提出了一种基于最小均方误差(MMSE)准则的自适应功率控制算法。

该算法通过估计信道质量和控制过程中的时变时滞,实现对CDMA系统中各用户的功率进行动态调整。

在MATLAB仿真环境下,设计了CDMA系统模型,并利用生成的随机信道模型和时变时滞模型,模拟了不同用户之间的干扰情况和信道质量变化。

通过对比分析,验证了所提算法在提高系统性能和抑制干扰方面的有效性。

结果:仿真结果表明,所提出的自适应功率控制算法能够有效抑制干扰,提高系统的容量和通信质量。

在时变时滞的情况下,该算法能够实时调整各用户的功率,使系统能够适应不同信道条件下的变化。

与传统的固定功率控制方法相比,该算法具有更好的性能和适应性。

结论:本文针对具有时变时滞的CDMA系统,提出了一种自适应功率控制算法,并通过MATLAB仿真验证了算法的有效性。

该算法能够实时调整各用户的功率,提高系统的容量和通信质量。

未来的研究可以进一步优化算法,提高系统的性能和适应性。

基于MATLAB的CDMA系统仿真

基于MATLAB的CDMA系统仿真

基于MATLAB的CDMA系统仿真姓名:班级:学号:指导老师:日期:作业要求1.分析附录的源程序,逐行给出中文注释,并分析仿真结果。

2.按照下列框图设计一个CDMA系统,并进行仿真。

1.分析附录的源程序,逐行给出中文注释,并分析仿真结果。

%main_IS95_forward.m%此函数用于IS-95前向链路系统的仿真,包括扩%频调制,匹配滤波,RAKE接收等相关通信模块。

%仿真环境: 加性高斯白噪声信道.%数据速率= 9600 KBps%clear allclose allclcdisp('--------------start-------------------');global Zi Zq Zs show R Gi Gqclear j;show = 0; %控制程序运行中的显示SD = 0; % 选择软/硬判决接收%-------------------主要的仿真参数设置------------------BitRate = 9600; %比特率ChipRate = 1228800; %码片速率N = 184; %源数据数MFType = 1; % 匹配滤波器类型--升余弦R = 5;%+++++++++++++++++++Viterbi生成多项式++++++++++++++++++G_Vit = [1 1 1 1 0 1 0 1 1; 1 0 1 1 1 0 0 0 1];%Viterbi生成多项式矩阵K = size(G_Vit, 2); %列数L = size(G_Vit, 1); %行数%++++++++++++++++++++++++++++++++++++++++++++++++++++++%++++++++++++++++++++++Walsh矩阵++++++++++++++++++++++++ WLen = 64; %walsh码的长度Walsh = reshape([1;0]*ones(1, WLen/2), WLen , 1); %32个1 0行%Walsh = zeros(WLen ,1);%++++++++++++++++++++++++++++++++++++++++++++++++++++++%++++++++++++++++++扩频调制PN码的生成多项式++++++++++++++%Gi = [ 1 0 1 0 0 0 1 1 1 0 1 0 0 0 0 1]';%Gq = [ 1 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1]';Gi_ind = [15, 13, 9, 8, 7, 5, 0]'; %i路PN码生成多项式参数Gq_ind = [15, 12, 11, 10, 6, 5, 4, 3, 0]'; %q路PN码生成多项式参数Gi = zeros(16, 1); %16×1的0矩阵Gi(16-Gi_ind) = ones(size(Gi_ind));%根据Gi_ind配置i路PN码生成多项式Zi = [zeros(length(Gi)-1, 1); 1];% I路信道PN码生成器的初始状态Gq = zeros(16, 1); %16×1的0矩阵Gq(16-Gq_ind) = ones(size(Gq_ind)); %根据Gq_ind配置q路PN码生成多项式Zq = [zeros(length(Gq)-1, 1); 1];% Q路信道PN码生成器的初始状态%++++++++++++++++++++++++++++++++++++++++++++++++++++++%+++++++++++++++++++扰码生成多项式++++++++++++++++++++++Gs_ind = [42, 35, 33, 31, 27, 26, 25, 22, 21, 19, 18, 17, 16, 10, 7, 6, 5, 3, 2, 1, 0]'; Gs = zeros(43, 1); %43×1的0矩阵Gs(43-Gs_ind) = ones(size(Gs_ind)); %根据Gs_ind配置扰码生成多项式Zs = [zeros(length(Gs)-1, 1); 1];% 长序列生成器的初始状态%++++++++++++++++++++++++++++++++++++++++++++++++++++++%++++++++++++++++++++++AWGN信道++++++++++++++++++++++++ EbEc = 10*log10(ChipRate/BitRate);%处理增益EbEcVit = 10*log10(L);EbNo = [-2 : 0.5 : 6.5]; %仿真信噪比范围(dB)%EbNo = [-2 : 0.5 : -1.5];%++++++++++++++++++++++++++++++++++++++++++++++++++++++%------------------------------------------------------%-------------------------主程序-------------------------ErrorsB = []; ErrorsC = []; NN = [];if (SD == 1) % 判断软/硬判决接收fprintf('\n SOFT Decision Viterbi Decoder\n\n');elsefprintf('\n HARD Decision Viterbi Decoder\n\n');endfor i=1:length(EbNo) %根据EbNo多次运行fprintf('\nProcessing %1.1f (dB)', EbNo(i));%输出当前EbNo值iter = 0; ErrB = 0; ErrC = 0;while (ErrB <300) & (iter <150)drawnow;%++++++++++++++++++++++发射机+++++++++++++++++++++++TxData = (randn(N, 1)>0);%生成源数据% 速率为19.2Kcps[TxChips, Scrambler] = PacketBuilder(TxData, G_Vit, Gs); %产生IS-95前向链路系统的发送数据包% 速率为1.2288Mcps[x PN MF] = Modulator(TxChips, MFType, Walsh);%实现IS-95前向链路系统的数据调制%++++++++++++++++++++++++++++++++++++++++++++++++++++++%++++++++++++++++++++++++信道+++++++++++++++++++++++++++noise = 1/sqrt(2)*sqrt(R/2)*( randn(size(x)) + j*randn(size(x)))*10^(-(EbNo(i) - EbEc)/20);%生成噪声序列r = x+noise;%加入噪声%++++++++++++++++++++++++++++++++++++++++++++++++++++++%+++++++++++++++++++++++++接收机++++++++++++++++++++++++RxSD = Demodulator(r, PN, MF, Walsh); %软判决,速率为19.2 KcpsRxHD = (RxSD>0); % 定义接收码片的硬判决if (SD)[RxData Metric]= ReceiverSD(RxSD, G_Vit, Scrambler); %软判决else[RxData Metric]= ReceiverHD(RxHD, G_Vit, Scrambler); %硬判决end%++++++++++++++++++++++++++++++++++++++++++++++++++++++if(show)subplot(311); plot(RxSD, '-o'); title('Soft Decisions'); %软判决结果图subplot(312); plot(xor(TxChips, RxHD), '-o'); title('Chip Errors');%RAKE接收机输入符号与发送码相比出错的码subplot(313); plot(xor(TxData, RxData), '-o'); %硬判决接收机与发送数据相比的出错码title(['Data Bit Errors. Metric = ', num2str(Metric)]);pause;endif(mod(iter, 50)==0) %每50次保存一次fprintf('.');save TempResults ErrB ErrC N iter %保存结果endErrB = ErrB + sum(xor(RxData, TxData));%求出错比特数ErrC = ErrC + sum(xor(RxHD, TxChips)); %求出错码数iter = iter+ 1;%迭代次数endErrorsB = [ErrorsB; ErrB]; %存储各EbNo值下的出错比特数ErrorsC = [ErrorsC; ErrC]; %存储各EbNo值下的出错码数NN = [NN; N*iter]; %存储各EbNo值下的总数据码数目save SimData * %保存当前迭代的数据end%+++++++++++++++++++++++++误码率计算++++++++++++++++++++++++PerrB = ErrorsB./NN; %出错比特比例%PerrB1 = ErrorsB1./NN1;PerrC = ErrorsC./NN; %出错码比例Pbpsk= 1/2*erfc(sqrt(10.^(EbNo/10))); %EbNo的余误差PcVit= 1/2*erfc(sqrt(10.^((EbNo-EbEcVit)/10)));%EbNo-EbEcVit的余误差Pc = 1/2*erfc(sqrt(10.^((EbNo-EbEc)/10)));%EbNo-EbEc的余误差%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%+++++++++++++++++++++++++性能仿真显示++++++++++++++++++++++ figure;semilogy(EbNo(1:length(PerrB)), PerrB, 'b-*'); hold on;%信噪比误码率图% %semilogy(EbNo(1:length(PerrB1)), PerrB1, 'k-o'); hold on;% semilogy(EbNo(1:length(PerrC)), PerrC, 'b-o'); grid on;% semilogy(EbNo, Pbpsk, 'b-.^');% %semilogy(EbNo, PcVit, 'k-.x'); ylabel('BER');% semilogy(EbNo, Pc, 'b-.x');xlabel('信噪比/dB');ylabel('误码率');grid on;% legend('Pb of System (HD)', 'Pb of System (SD)', 'Pc before Viterbi of System',% ... 'Pb of BPSK with no Viterbi (theory)', 'Pc on Receiver (theory)');%% legend('Pb of System', 'Pc before Viterbi of System', ...%'Pb of BPSK with no Viterbi (theory)',%'Pc before Viterbi (theory)', 'Pc on Receiver (theory)');%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++disp('--------------end-------------------');%------------------------------------------------------% ************************beginning of file*****************************%PacketBuilder.mfunction [ChipsOut, Scrambler] = PacketBuilder(DataBits, G, Gs);%此函数用于产生IS-95前向链路系统的发送数据包%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% DataBits 发送数据(二进制形式)% G Viterbi编码生成多项式% Gs 长序列生成多项式(扰码生成多项式)% ChipsOut 输入到调制器的码序列(二进制形式)% Scrambler 扰码%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ global Zs %扰码状态K = size(G, 2); %维特比多项式的长度L = size(G, 1); %每个数据比特的码片数N = 64*L*(length(DataBits)+K-1);% 码片数(9.6 Kbps -> 1.288 Mbps)chips = VitEnc(G, [DataBits; zeros(K-1,1)]); % Viterbi编码% 交织编码INTERL = reshape(chips, 24, 16); % IN:列, OUT:行chips = reshape(INTERL', length(chips), 1); %速率=19.2 KBps% 产生扰码[LongSeq Zs] = PNGen(Gs, Zs, N);%根据生成多项式和输入状态产生长度为N的PN序列Scrambler = LongSeq(1:64:end);%扰码ChipsOut = xor(chips, Scrambler); %加扰%************************end of file***********************************% ************************beginning of file*****************************%VitEnc.mfunction y = VitEnc(G, x);% 此函数根据生成多项式进行Viterbi编码%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% G 生成多项式的矩阵% x 输入数据(二进制形式)% y Viterbi编码输出序列%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++K = size(G, 1); %每个数据比特的码片数L = length(x); %输入数据的长度yy = conv2(G, x'); %二维卷积yy = yy(:, 1:L); %根据L重新设定yy长度y = reshape(yy,K*L, 1);%矩阵变形y = mod(y, 2); %模二运算% ************************end of file*********************************** % ************************beginning of file***************************** %PNGen.mfunction [y, Z] = PNGen(G, Zin, N);%% 此函数是根据生成多项式和输入状态产生长度为N的伪随机序列%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% G 生成多项式% Zin 移位寄存器初始化% N PN序列长度% y 生成的PN码序列% Z 移位寄存器的输出状态%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ L = length(G);%扰码生成多项式长度Z = Zin; % 移位寄存器的初始化y = zeros(N, 1);%N*1的0矩阵for i=1:Ny(i) = Z(L); %获取当前状态输出值(移位寄存器的最后一位输出)Z = xor(G*Z(L), Z); %生成移位寄存器次态Z = [Z(L); Z(1:L-1)]; %移位寄存器后移1位end%yy = filter(1, flipud(G), [1; zeros(N-1, 1)]);%yy = mod(yy, 2);%************************end of file*********************************** % ************************beginning of file***************************** %Modulator.mfunction [TxOut, PN, MF] = Modulator(chips, MFType, Walsh);%此函数用于实现IS-95前向链路系统的数据调制%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% chips 发送的初始数据% MFType 成型滤波器的类型选择% Walsh walsh码% TxOut 调制输出信号序列% PN 用于扩频调制的PN码序列% MF 匹配滤波器参数%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ global Zi Zq show R Gi GqN = length(chips)*length(Walsh); %输出数据的数目% 输入速率= 19.2 KBps, 输出速率= 1.2288 Mcpstmp = sign(Walsh-1/2)*sign(chips'-1/2); %求扩频调制码数目的中间变量chips = reshape(tmp, prod(size(tmp)), 1);%矩阵变形[PNi Zi] = PNGen(Gi, Zi, N);%i路PN序列生成[PNq Zq] = PNGen(Gq, Zq, N);%q路PN序列生成PN = sign(PNi-1/2) + j*sign(PNq-1/2); %i、q路以复数形式合并chips_out = chips.*PN;%得到复数形式的码序列chips = [chips_out, zeros(N, R-1)];%码序列0插值chips = reshape(chips.' , N*R, 1);%矩阵变形%成型滤波器switch (MFType) %根据MFType选择滤波器类型case 1%升余弦滤波器L = 25;L_2 = floor(L/2);n = [-L_2:L_2]; %升余弦滤波器点数B = 0.7; %B越大拖尾越小MF = sinc(n/R).*(cos(pi*B*n/R)./(1-(2*B*n/R).^2)); %升余弦滤波器形状MF = MF/sqrt(sum(MF.^2)); %升余弦滤波器特性曲线case 2%矩形滤波器L = R;L_2 = floor(L/2);MF = ones(L, 1); %1->0,锐截止MF = MF/sqrt(sum(MF.^2)); %矩形滤波器特性曲线case 3%汉明滤波器L = R;L_2 = floor(L/2);MF = hamming(L);%生成汉明滤波器MF = MF/sqrt(sum(MF.^2));%汉明滤波器特性曲线endMF = MF(:); %转置TxOut = sqrt(R)*conv(MF, chips)/sqrt(2);%通过成型滤波器TxOut = TxOut(L_2+1: end - L_2); %限定序列区间if (show)figure;subplot(211); plot(MF, '-o'); title('Matched Filter'); grid on;%成型滤波器特性曲线图subplot(212); psd(TxOut, 1024, 1e3, 113); title('Spectrum'); %功率谱密度估计end% ************************end of file***********************************% ************************beginning of file*****************************%Demodulator.mfunction [SD] = Demodulator(RxIn, PN, MF, Walsh);% 此函数是实现基于RAKE接收机的IS-95前向信链路系统的数据包的解调%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% RxIn 输入信号% PN PN码序列(用于解扩)% MF 匹配滤波器参数% Walsh 用于解调的walsh码% SD RAKE接收机的软判决输出%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% DEMODULATOR This function performs demodulation of the forward% Channel packet, based on RAKE Receiver% Block Diagram% Input Signal -> [Matched Filter] -> [Sampler] -> [RAKE Receiver] -> [Walsh] -> [DeSpreading]% Inputs: RxIn - input signal (I/Q) analoge% PN - PN sequence (used for De-spreading)% MF - matched filter taps% Walsh - Used row of Walsh matrix for recovering %% Outputs: SD - Soft Decisions of RAKE receiver%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++global RN = length(RxIn)/R; %有用码的个数L = length(MF);L_2 = floor(L/2);rr = conv(flipud(conj(MF)), RxIn); %通过匹配接收滤波器rr = rr(L_2+1: end - L_2); %限定接收符号序列长度Rx = sign(real(rr(1:R:end))) + j*sign(imag(rr(1:R:end)));%接收符号采样Rx = reshape(Rx, 64, N/64); %列导向Walsh = ones(N/64, 1)*sign(Walsh'-1/2);%行导向walsh码PN = reshape(PN, 64, N/64)';%矩阵变形PN = PN.*Walsh;%walsh正交% 输入速率= 1.2288 Mpbs, 输出速率= 19.2 KBpsSD= PN*Rx;%解扩SD= real(diag(SD));%确定软判决输出% ***********************end of file***********************************% ************************beginning of file*****************************%ReceiverSD.mfunction [DataOut, Metric] = ReceiverSD(SDchips, G, Scrambler);% 此函数用于实现基于Viterbi译码的发送数据的恢复%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% SDchips 软判决RAKE接收机输入符号% G Viterbi编码生成多项式矩阵% Scrambler 扰码序列% DataOut 接收数据(二进制形式)% Metric Viterbi译码最佳度量%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++if (nargin == 1)%判断只有SDchips传入时在此生成Viterbi编码生成多项式矩阵G = [1 1 1 1 0 1 0 1 1; 1 0 1 1 1 0 0 0 1];end% 速率=19.2 KBpsSDchips = SDchips.*sign(1/2-Scrambler);%解扰INTERL = reshape(SDchips, 16, 24);%解交织SDchips = reshape(INTERL', length(SDchips), 1); % 速率=19.2 KBps[DataOut Metric] = SoftVitDec(G, SDchips, 1);%实现软判决输入的Viterbi译码% ************************end of file**********************************% ************************beginning of file*****************************%SoftVitDec.mfunction [xx, BestMetric] = SoftVitDec(G, y, ZeroTail);%% 此函数是实现软判决输入的Viterbi译码%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% G 生成多项式的矩阵% y 输入的待译码序列% ZeroTail 判断是否包含‘0’尾% xx Viterbi译码输出序列% BestMetric 最后的最佳度量%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++L = size(G, 1); % 输出码片数K= size(G, 2); % 生成多项式的长度N = 2^(K-1); % 状态数T = length(y)/L; % 最大栅格深度OutMtrx = zeros(N, 2*L); %输出矩阵的定义for s = 1:Nin0 = ones(L, 1)*[0, (dec2bin((s-1), (K-1))-'0')];in1 = ones(L, 1)*[1, (dec2bin((s-1), (K-1))-'0')];out0 = mod(sum((G.*in0)'), 2);out1 = mod(sum((G.*in1)'), 2);OutMtrx(s, :) = [out0, out1]; %生成输出矩阵endOutMtrx = sign(OutMtrx-1/2);PathMet = [100; zeros((N-1), 1)]; % 初始状态= 100PathMetTemp = PathMet(:,1); %副本Trellis = zeros(N, T); %栅格的矩阵Trellis(:,1) = [0 : (N-1)]';%给第一列赋值y = reshape(y, L, length(y)/L);%矩阵按输出码片数变形for t = 1:T %主栅格计算循环yy = y(:, t); %取出y的第t列for s = 0:N/2-1[B0 ind0] = max( PathMet(1+[2*s, 2*s+1]) + [OutMtrx(1+2*s, 0+[1:L]) * yy; OutMtrx(1+(2*s+1), 0+[1:L])*yy] );[B1 ind1] = max( PathMet(1+[2*s, 2*s+1]) + [OutMtrx(1+2*s, L+[1:L]) * yy; OutMtrx(1+(2*s+1), L+[1:L]) * yy] );PathMetTemp(1+[s, s+N/2]) = [B0; B1]; %改变状态Trellis(1+[s, s+N/2], t+1) = [2*s+(ind0-1); 2*s + (ind1-1)];%生成栅格矩阵endPathMet = PathMetTemp;%赋状态值endxx = zeros(T, 1);%生成单列0矩阵,输出变量if (ZeroTail) %确定最佳度量BestInd = 1;else[Mycop, BestInd] = max(PathMet); %非‘0’尾,取最大值所在位置endBestMetric = PathMet(BestInd); %得到最后的最佳度量xx(T) = floor((BestInd-1)/(N/2)); %赋值xx最后一个数NextState = Trellis(BestInd, (T+1)); %从栅格矩阵获得初态for t=T:-1:2xx(t-1) = floor(NextState/(N/2));%倒序生成xxNextState = Trellis( (NextState+1), t); %从栅格矩阵获得次态endif (ZeroTail)xx = xx(1:end-K+1);%限定译码输出序列长度end% ************************end of file***********************************% ************************beginning of file*****************************%ReceiverHD.mfunction [DataOut, Metric] = ReceiverHD(HDchips, G, Scrambler);% 此函数用于实现基于Viterbi译码的硬判决接收机%+++++++++++++++++++++++variables++++++++++++++++++++++++++++%HDchips 硬判决RAKE接收机输入符号% G Viterbi编码生成多项式矩阵% Scrambler 扰码序列% DataOut 接收数据(二进制形式)% Metric Viterbi译码最佳度量%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++if (nargin == 1) %判断只有HDchips传入时在此生成Viterbi编码生成多项式矩阵G = [1 1 1 1 0 1 0 1 1; 1 0 1 1 1 0 0 0 1];end% 速率=19.2 KBpsHDchips = xor(HDchips, Scrambler);%解扰INTERL = reshape(HDchips, 16, 24);%解交织HDchips = reshape(INTERL', length(HDchips), 1);%速率=19.2 KBps[DataOut Metric] = VitDec(G, HDchips, 1);%维特比解码%************************end of file***********************************% ************************beginning of file*****************************%VitDec.mfunction [xx, BestMetric] = VitDec(G, y, ZeroTail);%% 此函数是实现硬判决输入的Viterbi译码%+++++++++++++++++++++++variables++++++++++++++++++++++++++++% G 生成多项式的矩阵% y 输入的待译码序列% ZeroTail 判断是否包含‘0’尾% xx Viterbi译码输出序列% BestMetric 最后的最佳度量%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++L = size(G, 1); % 输出码片数K= size(G, 2); % 生成多项式长度N = 2^(K-1); % 状态数T = length(y)/L; % 最大栅格深度OutMtrx = zeros(N, 2*L);%输出矩阵的定义for s = 1:Nin0 = ones(L, 1)*[0, (dec2bin((s-1), (K-1))-'0')];in1 = ones(L, 1)*[1, (dec2bin((s-1), (K-1))-'0')];out0 = mod(sum((G.*in0)'), 2);out1 = mod(sum((G.*in1)'), 2);OutMtrx(s, :) = [out0, out1];%生成输出矩阵endPathMet = [0; 100*ones((N-1), 1)];%初始状态为0PathMetTemp = PathMet(:,1);%副本Trellis = zeros(N, T);%栅格的矩阵Trellis(:,1) = [0 : (N-1)]';%给第一列赋值y = reshape(y, L, length(y)/L);%矩阵按输出码片数变形for t = 1:T %主栅格计算循环yy = y(:, t)';%取出y的第t列for s = 0:N/2-1[B0 ind0] = min( PathMet(1+[2*s, 2*s+1]) + [sum(abs(OutMtrx(1+2*s, 0+[1:L]) - yy).^2); sum(abs(OutMtrx(1+(2*s+1), 0+[1:L]) - yy).^2)] );[B1 ind1] = min( PathMet(1+[2*s, 2*s+1]) + [sum(abs(OutMtrx(1+2*s, L+[1:L]) - yy).^2); sum(abs(OutMtrx(1+(2*s+1), L+[1:L]) - yy).^2)] );PathMetTemp(1+[s, s+N/2]) = [B0; B1];%改变状态Trellis(1+[s, s+N/2], t+1) = [2*s+(ind0-1); 2*s + (ind1-1)];%生成栅格矩阵endPathMet = PathMetTemp;%赋状态值endxx = zeros(T, 1);%生成单列0矩阵,输出变量if (ZeroTail) %确定最佳度量BestInd = 1;else[Mycop, BestInd] = min(PathMet);%非‘0’尾,取最小值所在位置endBestMetric = PathMet(BestInd);%得到最后的最佳度量xx(T) = floor((BestInd-1)/(N/2));%赋值xx最后一个数NextState = Trellis(BestInd, (T+1));%从栅格矩阵获得初态for t=T:-1:2xx(t-1) = floor(NextState/(N/2)); %倒序生成xxNextState = Trellis( (NextState+1), t);%从栅格矩阵获得次态endif (ZeroTail)xx = xx(1:end-K+1); %限定译码输出序列长度end% ************************end of file***********************************运行结果:图1 升余弦滤波器时的结果图2 矩形滤波器时代结果图3 矩形滤波器时代结果2.按照下列框图设计一个CDMA系统,并进行仿真。

基于MATLAB的CDMA通信系统的仿真

基于MATLAB的CDMA通信系统的仿真

基于MATLAB勺CDM軀信系统的仿真摘要:利用MATLA呼台的Simulink可视化仿真功能,结合CDMA勺实际通信情况,对CDMA!信系统的实现完整以及发送到接收的端到端的CDMA无通信系统的建模、仿真和分析。

本次介绍了CDMA勺主要环节,包括扩频技术、信道等参数设置。

关键字:码分多址;扩频;MATLA;B Simulink1 CDMA 技术基础1.1 扩频定义:扩频技术就是将信息的频谱展宽后进行传输的技术。

理论基础:在白噪声干扰的条件下,信道容量—信道带宽S —信号平均功率 N —噪声平均功率论:在信道容量C 不变的情况下,信道带宽B 与信噪比S/N 完全可以互即可以通过增大传输系统的带宽可以在较低信噪比的条件下获得比 较满意的传输质量。

-fSB ----------k佶号JfO扩频后i 的佶号麵图1扩频过程扩频通信系统的主要特点:(1)隐蔽性和保密性;(2 )抗干扰和抗多径衰落能力强;(3)实现多址技术、增加容量、提高频率复用率;( 4)占用频带较宽,系统复杂性增加。

1.2 CDMA 仿真系统模型建立信源高昕a嗓声图2本次仿真CDM 系统组成框图C = B Iog2 (1 + S / N ) 香农公式相交换,2 Matlab 的CDMA 通信系统的仿真2.1直接扩频的码分多址通信系统的仿真模型CHKBFtt 蛇I?曲寮 FtUrmEeriJIi& n 町直接扩频的码分多址通信系统的仿真模型2.2 仿真系统的各部分分析宽度为6X 10 - 6 s 。

(1)第一路伯努利二进制随机信号发生器iT —l"g<j| lii Sin OffB«rioLjlli B -in-ary---图4二进制伯努利序列产生器 图5第一路发生器产生的仿真波形h_n_n_rir r-r-1 EUJR . jii _k - ni~ tna-KDspley|~u n rj strMli Ernar/Berculli 帥町 Ge-teiEbflMl€ei[z3.31C21zg£淞1S 叭训 i Sinijy3finGfEO2削LcncEGenermxIrteucDsli ^*?**tM[;DE3i :i F It^lQajsa.q Sse2.2.1 伯努利二进制随机信号发生器三个 Bernoulli Random Binary Generator(伯努利二进制随机信号发生器)表示三个不同的通信用户发射各自的通信信息 (基带信号),码元u 呦C 就Ber J Hi Bi n 17*T JC Enn 社t許离亡E IdIstizinPLTII } EiwRstiCal ulatUT 也) f 匚卄1"K E™ mat表2第一路二进制伯努利序列产生器参数设置参数名称 参数值模块类型Berno ulli Binary Gen eratorP robability of a zero0.5 In itial seed 12345 Samp le time 3*2e-7 Frame-base out putsUncheckedIn terl pret vector p arameter as 1-DUnchecked(2)第二路伯努利二进制随机信号发生器□crnobll i曰 i narv曰crnmu Hi Bi n ary图6二进制伯努利序列产生器表3第二路二进制伯努利序列产生器参数设置参数名称 参数值模块类型Berno ulli Binary Gen eratorP robability of a zero0.5 In itial seed 54321 Samp le time 3*2e-7 Frame-base out putsUnchecked Interlpret vector parameter as 1-DUnchecked(3)第三路伯努利二进制随机信号发生器图9第三路发生器产生的仿真波形D …1 — III n ■ 1 1 …1 1 [・ py.—…IT11 1 1 ■ 1= ---- ■- ------ ! - ----- 1 - — 1 ■ ■■ 1 ■ 1 1 1 - - 1 ■ I---- ■ : 7 --- ■ 1 h- ■----1 ■L ■* ~-12H01 0.01R —iCigjIli binaryBcjma-Lklli ainnjy图8二进制伯努利序列产生器图7第二路发生器产生的仿真波形表4第二路二进制伯努利序列产生器参数设置参数名称 参数值模块类型Berno ulli Binary Gen eratorP robability of a zero0.5 In itial seed 13542 Samp le time 3*2e-7 Frame-base out putsUnchecked In terl pret vector p arameter as 1-DUnchecked222 直接扩频图10 PN 伪随机序列产生器表 5 PN Seque neeGen erator 参数设置(rf-iltrHlcVf 戸&丁也卸“讥"卜成寧项式JCl 1 0 0 J]to 1 0 0]Sc^itTfnr 匱羽荐曲) 0SiHupk t inK <釆样 时阪P裁一T本系统中的m 序列周期是15,码元宽度为2X 10 — 7 s ,基带信号码元宽度是m 序列码元宽度的30倍, 正好是两个m 序列的周期。

基于MATLAB的CDMA系统仿真分析毕业论文

基于MATLAB的CDMA系统仿真分析毕业论文

基于MATLAB的CDMA系统仿真分析毕业论文基于MATLAB的CDMA系统仿真分析【摘要】本设计基于MATLAB仿真软件,完整地实现了CDMA通信系统的建模、仿真和分析过程错误!未找到引用源。

;仿真系统包括了CDMA编码技术、扩频技术、调制技术、信道传输以及解调恢复技术等各个功能模块。

全面的介绍了整个CDMA通信系统的工作原理和工作方式,并介绍了各个模块的参数设置;文章内容包括CDMA的发展现状以及发展趋势、CDMA通信系统的技术优势和应用领域,从而说明CDMA通信系统在的研究价值和潜力。

同时,本文也通过举例简单介绍了MATLAB软件,对用于实现系统模块功能的MATLAB仿真语句有了进一步的了解。

MATLAB软件功能齐全,操作简单,应用广泛。

通过本次设计得出,CDMA系统的抗干扰能力强,单用户的情况下,即使在各种人为和物理噪声的干扰下,依旧可以准确接收到数据。

【关键词】CDMA,MATLAB,仿真,通信系统Analysis of CDMA System Simulation Based on MATLAB【Abstract】This thesis is based on the simulation function of the MATLAB software, using MATLAB language to carry out the modeling, simulation, and analysis of the CDMA communication system. At the same time, the important parts of communication system are introduced in detail, including coding, spread spectrum, decoding, modulation and channel transmission, etc. This thesis also refers to the condition, advantages and development of CDMA system to show its potential and value for research. What’s more, the thesis also using an example to give a brief introduction of the simulation platform of MATLAB software, it is such a powerful, easy operating software that is widely used in many fields. This simulation platform displays the superiority of CDMA effectively, and the result shows that CDMA can receive the accurately data even in a big noise.【Key words】Code Division Multiple Access, communication system, MATLAB, simulation目录第一章绪论 (1)1.1 CDMA的研究背景 (1)1.2 CDMA的发展趋势 (1)1.2.1 CDMA的发展现状 (1)1.2.2 CDMA的发展趋势 (2)1.3 CDMA的研究目的 (3)1.3.1 研究目的 (3)1.3.2 研究思路 (4)第二章 CDMA技术原理 (6)2.1 CDMA 基本模型 (6)2.1.1 卷积编码 (6)2.1.2 交织编码 (7)2.1.3 伪随机码 (7)2.1.4 扩频序列 (9)2.1.5 信号调制 (10)2.1.6 信号解调 (11)2.1.7 维特比译码 (12)2.2 CDMA的技术特点 (12)2.3 CDMA的主要应用优势 (13)第三章 CDMA系统仿真分析 (14)3.1 MATLAB的简介 (14)3.2 调试结果 (15)3.2.1 原始序列 (16)3.2.2 维特比编码序列 (17)3.2.3 交织编码序列 (18)3.2.4 加扰码序列 (19)3.2.5 扩频调制序列 (20)3.2.6 加噪信号 (22)3.2.7 解扩频得到的信号 (24)3.2.8 解扰解交织得到的信号 (24)3.2.9 恢复序列 (25)3.2.10 误码率 (26)3.3仿真结果 (27)总结 (30)参考文献 (31)致谢....................................................... 错误!未定义书签。

基于MATLAB的CDMA系统RAKE接收机仿真分析

基于MATLAB的CDMA系统RAKE接收机仿真分析

06 仿真结果讨论与结论
仿真结果对比分析
仿真结果与理论 值的对比来自不同参数设置下 的性能对比
与传统接收机的 性能对比
仿真结果的可视 化展示
性能提升方案探讨
算法优化:针对CDMA系统RAKE接收机的算法进行优化,以提高解调性能。 信道估计:采用更准确的信道估计方法,降低误码率,提高通信质量。 多天线技术:利用多天线技术提高信号的抗干扰能力和覆盖范围。 联合检测:采用联合检测算法,降低干扰,提高系统容量和频谱利用率。
的指标
05
CDMA系统RAKE接收 机仿真分析
仿真环境搭建
MATLAB软 件介绍
RAKE接收机 模型建立
CDMA系统 模型建立
仿真参数设 置与运行
仿真参数设置
信号类型: CDMA信号
信噪比范围:030dB
多径分量:3个
仿真时长: 100ms
仿真结果分析
误码率:随着信 噪比的增加,误 码率逐渐降低
M AT L A B 简 介
MATL AB是一种 用于算法开发、 数据可视化、数 据分析和数值计 算的编程语言和 开发环境
它提供了大量的 内置函数和工具 箱,可用于各种 领域,如信号处 理、通信、控制 系统等
MATL AB具有简 单易学的语法和 强大的计算能力, 使得非专业程序 员也能轻松地编 写高效的代码
单击添加标题
适用场景:适用于多径环境和移动通信系统,如CDMA、WCDMA等。
RAKE接收机性能指标
信号-噪声比: 衡量RAKE接 收机性能的重
要指标
误码率:衡量 数据传输可靠 性的关键指标
频谱效率:衡 量频谱利用率 的指标,直接 影响系统容量
和传输速率
抗干扰能力: 衡量RAKE接 收机在复杂环 境下工作能力

CDMA系统仿真(matlab)

CDMA系统仿真(matlab)

CDMA系统仿真1.设计要求说明用matlab进行CDMA系统仿真,CDMA系统框图如图所示。

图 1 CDMA系统框图2、设计思路通过对IS-95窄带CDMA反向业务信道原理的了解,采用模块化思想,分为信源编码,信道交织编码,AWGN信道传播,信道解码以及信源解码等部分。

3、核心原理3.1 Viterbit(卷积)编码卷积码是分组的,但它的监督元不仅与本组的信息元有关,还与前若干组的信息由关。

着种码纠错能力强,不仅可以纠正随机差错,还能纠正突发差错。

本系统采用(2,1,8)卷积编码,编码器如图 2所示:图 2 卷积编码3.2 Walsh 码扩频Walsh 码是一组由0和1元素构成的正交方阵,即其任意两行(或两列)相互正交。

IS-95系统利用Walsh 码作为地址码,与信息数据相乘(或模2加)进行地址么调制,增强系统的抗干扰能力。

3.3 数据扰码利用伪随机序列对数据进行扰码,增强系统的抗干扰能力。

伪随机序列具有类似于随机序列的确定序列,序列中不同位置的元素取值相互独立,取0和1的概率相等。

本系统采用生成矩阵为[1000000101010001110011011110000010011101111]的m 序列发生器,对数据进行扰码。

3.4 QPSK 信号 3.4.1 QPSK 调制MPSK 调制中最常用的就是4PSK ,又称QPSK 。

因为它有四种相位状态,所以称为四相键控;又因为他是两个相互相交的BPSK 之和,所以又称作为正交移相键控,记作QPSK 。

对于矩形包络的多进制移相键控(MPSK ),其已调信号的表达式为:)(sin )()(cos )()(t t Q t t I t S c c MPSK ωω-=式中∑-=nb n nT t rect a t I )()( 同相分量∑-=n bnnTt rectbtQ)()(正交分量当M=4时,即位QPSK,它是由两个互相正交的BPSK之和构成的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2 功率控制方法[3]
CDMA系统的前向链路(基站到移动台)和反向链路 (移动台到基站)具有相互独立的统计特性,并且它们的
目的和方法也不相同,因此功率控制在它们上的应用也 是独立的[1]。反向链路的功率控制包括开环控制和闭环控 制以及外环功率控制:
—开环:移动台根据接收到的基站导频信号的强 度,确定其发射功率。特点:对发射功率较为粗略的估 计,能快速响应信道的变化。
4 结论
本文首先介绍了Ad hoc网络的特点以及路由协议分 类,然后针对三种典型的路由协议通过NS2仿真器进行了仿 真分析和性能比较,结果表明不同的路由协议有各自的应用 场合和优缺点。总之,Ad hoc路由协议的研究中还存在着 许多需要解决的问题,有待于进一步的探索。
参考文献 [1] CH IAN GCC,Wu H K,Liu W,et al. Routing in Cluster Multi-hop [A]. Mobile Wireless Networks with
[4] PERK IN S C E,BHA GWA T P. Highly dynamic destination sequenced distance vector routing (DSDV) for mobile computer [A].The ACM SIGCOMM Conf on Communications Architectures[C],London,1994
BS 接收端用户 i 的 SIR 可定义为:
,k=1,2…N
其中 Pi 是用户 i 的发射功率。Wij 是从用户 j 到用户 i 所在 小区基站之间的链路增益与用户g同所在小区基站之间的链
路增益做归一化后的增益,也叫增益因子。
假设无线链路的通信质量只和接收端测量到的SIR有关
系,对单一业务的蜂窝网络而言,所有链路要求的门限SIR
[5] JOHNSON DAV ID B,MAL TZ DAV ID A, HU Yihchun. The dynamic source routing protocol for mobile Ad hoc networks (DSR)[S]. IETF working group INTERNET-DRAFT 24 February 2003
[6] MURTHYS,CARCLA Lunn Aceves J J. An efficient routing protocol for wireless network [A]. ACM/ Baltzer Mobile Networks and Applications (Special Is- sue on Routing in Mobile Communications Networks) [C],1996;(2):1832197
同相部分。式
中ω = n
址干扰可表示为β=
,再考虑引入话音激活技术[6],
于是最终在基站k接收到用户i的信息比特能量Eb与干扰功
ω
cos(2
m
π
n/N),n=1,2,...,N0;φ
N
是最大多普勒频率正
弦曲线的初始相位,φ 是第n个多普勒频移正弦曲线的初始 n
相位。移动台的速率为50KM/h,多普勒频移fm是40Hz,N0
为了实现功率的实时控制,在信道中不仅考虑由阴影和
路径损失所引起的慢衰落,而且要考虑由多径传播引起的快
衰落。慢衰落的统计规律可表示为L= γ-α10ζ/10其中γ是
基站与移动台的距离,α是路径损耗指数,ζ是均值为0,标
准方差为σ的高斯随机变量。σ和α的典型值为8dB和4dB,
如图1所示。慢衰落是基于距离的函数,在很短的时间内(如
—闭环:对开环控制做出迅速的补充修正,基站 定期对收到的移动台信号进行测量,对信号的SIR(信噪 比)与期待的门限SIR进行比较,然后对移动台发出增加 或减弱其发射功率的命令。特点:控制准确度高,有利 于解决快衰落,但响应时间长,这段时间内会造成各种 干扰。同时基站必须对每个移动台有响应的控制信道, 开销比较大。实际中常采用开闭环结合的方法。
(上接第 104 页)
4.3 仿真结果 从图2可看出,固定步长功率控制算法在无分集接收 情况下,接收信号有很强的“过冲”现象,这是由于系统根 据上一时刻的接收信号的功率强度来决定下一时刻的功率 调整方向,而且每次的功率控制在系统出现深度衰落的时 刻,就会无法即时补偿,而在控制误差很小时,将引起很大 的波动。接收信号的功率的统计如图3所示。 从图3可以看出,实际接收的信号在期望值的附近波 动,而且分布的两边是非对称。比较步长为 1dB 的图 3 和 步长为0.5dB的图4,可发现在相同的衰落情况下,步长为 1dB的算法比较适合,从这里也可看出步长的取定与具体 环境(如衰落程度和背景干扰)有关。
1 功率控制的目的
由于CDMA系统不同于其它无限通信系统的特性, 在具有抗干扰能力强、保密性好、容量大等优点的同时, 不可避免的会带来其它一些问题,比如CDMA系统中的 “远近效应”、“边缘效应”和多址干扰[2]。
除了以上问题之外,CDMA通信系统也同样要考虑 信道衰落和多普勒频移的问题。通过功率控制技术,控 制发射端的功率,补偿无线信道衰落,减少小区间干扰, 从而达到:降低干扰,最大化系统容量;保证通信链路 的 QoS,以支持对 QoS 敏感的多媒体业务;提供小区间 的业务分流;延长移动台电池寿命。
3 基于 SIR 的功率控制算法描述[4]
假设每个基站内有 jn 个用户(n=1,2,3,…,N),系
统中总的用户为:
,小区k中的i用户是期望用
户,其他为干扰用户,忽略接收端的噪声,第 k 个小区中
信息安全与通信保密·2 0 0 6 . 4 103
通信技术
Communications Technologies
[3] Toh C K. A Novel Distributed Routing Pro- tocol to Support Ad Hoc Mobile Computing [A]. Proc. 1996 IEEE 15th Annual International Phoenix Conference Computer and Communication [C],1996: 480286
由图2和图3可以看出,AODV的端对端(end to end) 时延一直低于 0.05s,这是因为延迟时间跟路由发现相关。 AODV路由一旦建立,就可以很快地进行通信,而源路由协 议中的每一个中间节点在收到路由回答时都会尽量去获取经 过它的所有路由信息择优回传,在数据报传送中也一样,因 此花费了大量的时间。而CBRP的路由发现需要两步完成, 因此需要更多的时延。随着节点移动速度降低,拓扑结构趋 于稳定,每个节点的路由信息减少,时延也减少。
都相同。为保证通信链路的质量,必须保证γ >γ ,γ 是
i
ti
ti
所需的SIR门限。为了求解发射机的发射功率,上式可以写

。矩阵形式
,其中 P为发射功率的
列矢量。因此,基于SIR的功率控制算法就是利用一些测量 信息来满足上式的要求。
α为话音激活因子,这里取α为 0.4,为 0.85。
4.2 信道的模型[5]
k
图 1 信道的慢衰落 图 2 接收信号的“过冲”现象
白噪声;
表示其他用户产生的多址
干扰,可认为是随机的且服从正态分布。
γ
>γ
i
,γ
ti
ti
是所需的
Eb/N0
门限,它依赖
于用户发射的业务类型。由于周围移动台 图 3 步长为 1dB 的接收信号功率统计 图 4 步长为 0.5dB 的接收信号功率统计
通信技术
Communications Technologies
CDMA 功率控制的 MATLAB 仿真
张 博 刘 岚 (武汉理工大学,武汉 430070)
【摘 要】论文总结了 CDMA 通信系统功率控制的目的和方法,重点介绍了基于信噪比的功率控制算法,最后利用 MATLAB工具,对开闭环结合的功率控制方法进行了仿真,给出了实验结果。
的发送强度相对较低,且路径损耗距离更远,由此产生的干 扰电平通常可由β<1来表征,因此可进一步简化上面的方程
式,以目标小区为准,
为该目标小区内其它移动台产
生的多址干扰,N为该小区的移动台数目,目标小区外的多
定义N0=(1/2)(N/2-1),则衰落信道的信道函数T(t)可
以表示为
,式中xc和xs分别是正交和
【关键词】CDMA 功率控制 MATLAB仿真
The Power Control of CDMA and System Simulation in MATLAB
Zhang Bo Liu Lan (Wuhan University of Technology Hubei, Wuhan 430070) 【Abstract】The paper summarized the objection and method of CDMA power control, described the algorithm based on SIR. Finally, the paper gives a simulation in open - loop and closed-loop control. 【Keywords】CDMA power control MATLAB simulation
给出。
4 利用 MATLAB 进行计算机仿真
4.1 系统组成 系统由K个基站和J个移动台组成,以其中的一个基站 作为目标基站。在基站k 接收到用户i的信息比特能量Eb与
干扰功率谱密度 N0(SIR)之比为:
,式中
Pi 为用户 i 的发射功率,它通常受限于最大发射功率,即 Pi=Pimax。Gki 表示用户 i 与基站 k 的链路增 益;Ri 是用户 i 的发射的比特速率;w 是扩 频宽度;η 为背景噪音,可以看作是高斯
相关文档
最新文档