教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 政务民生 >

基于Matlab的CDMA通信系统仿真(4)

来源:网络收集 时间:2026-08-18
导读: - 16 - 通信系统综合设计与实践 3、仿真部分主程序: %直接序列扩频主程序代码 function [ber] = dscdma(user,seq) % user: 同时进行扩频通信的用户数 % seq: 扩频码1:M-序列 2:Gold序列 3:正交Gold序列 % ber: 该

- 16 -

通信系统综合设计与实践

3、仿真部分主程序:

%直接序列扩频主程序代码

function [ber] = dscdma(user,seq) % user: 同时进行扩频通信的用户数

% seq: 扩频码1:M-序列 2:Gold序列 3:正交Gold序列 % ber: 该用户数下的误码率

%************************** 初始化部分 ***************************** sr = 25600.0; % 符号速率

nSymbol=1000; %每种信噪比下发送的符号数 M = 4; % 4-QAM调制 br = sr * log2(M); % 比特速率 graycode=[0 1 3 2]; % Gray编码规则

%********************** 脉冲成形滤波器参数 ************************** delay = 10; % 升余弦滤波器时延 Fs = 8; % 滤波器过采样数 rolloff = 0.5; % 升余弦滤波器滚降因子 rrcfilter = rcosine(1,Fs,'fir/sqrt',rolloff,delay); %设计根升余弦滤波器

%********************** 扩频码产生参数 **********************

% user = user1; % 用户数 stage = 3; % m序列的阶数 ptap1 = [1 3]; % m序列1的寄存器连接方式 ptap2 = [2 3]; % m序列2的寄存器连接方式 regi1 = [1 1 1 ]; % m序列1的寄存器初始值 regi2 = [1 1 1]; % m序列2的寄存器初始值

%******************** 扩频码的生成 *********************

switch seq

case 1 % M-序列 code = mseq(stage,ptap1,regi1,user);

case 2 % Gold 序列 m1 = mseq(stage,ptap1,regi1); m2 = mseq(stage,ptap2,regi2); code = goldseq(m1,m2,user);

EbNo=0:2:10; % Eb/No 变化范围

- 17 -

通信系统综合设计与实践

case 3 % 正交 Gold 序列 m1 = mseq(stage,ptap1,regi1); m2 = mseq(stage,ptap2,regi2);

code = [goldseq(m1,m2,user),zeros(user,1)]; end

code = code * 2 - 1; clen = length(code);

%************************** 衰落信道参数 **************************

ts = 1 / Fs / sr/ clen; % 信道采样时间间隔

t=(0:nSymbol*Fs*clen-1+2*delay*Fs)*ts; % 每种信噪比下的符号传输时间 y = 160; % 多普勒频移 [Hz] %h=rayleigh(fd,t);

%**************************** 仿真开始 ****************************

for indx=1:length(EbNo) indx

%************************** 发射端 ******************************** data = randsrc(user,nSymbol,[0 :3]) ; % 产生各个用户的发射数据 data1=graycode(data+1); % Gray编码 data1 = qammod(data1,M); % 4-QAM 调制 [out] = spread(data1,code); % 扩频

out1=rcosflt(out.',sr,Fs*sr,'filter',rrcfilter);

% 通过脉冲成形滤波器

spow = sum(abs((out1)).^2) / nSymbol; % 计算每个用户信号功率 if user > 1 % 用户数大于1时,所有用户数据相加 out1=sum(out1.'); else

out1=out1.'; end

%******************** 通过瑞利衰落信道 ****************************** % out1=h.*out1;

%************************* 接收端 *********************************

sigma = sqrt(0.5 * spow * sr / br * 10^(-EbNo(indx)/10)); % 根据信噪比计算高斯白噪声方差 y=[];

- 18 -

通信系统综合设计与实践

for ii=1:user

y(ii,:)=out1+sigma(ii).*(randn(1,length(out1))+j*randn(1,length(out1))); % 加入高斯白噪声(AWGN)

%y(ii,:)=y(ii,:)./h; % 假设理想信道估计 end

y=rcosflt(y.',sr,Fs*sr,'Fs/filter',rrcfilter);

% 通过脉冲成形滤波器进行滤波

y=downsample(y,Fs); % 降采样 for ii=1:user

y1(:,ii)=y(2*delay+1:end-2*delay,ii); end

yd = despread(y1.',code); % 数据解扩 demodata = qamdemod(yd,M); % 4-QAM 解调 demodata=graycode(demodata+1); % Gray编码逆映射

[err,ber(indx)]=biterr(data,demodata,log2(M)); % 统计误比特率 end

主程序中spread函数的代码:

%扩频函数

function [out] = spread(data, code)

% **************************************************************** % data : 输入数据序列 % code : 扩频码序列

% out : 扩频后的输出数据序列

% ****************************************************************

switch nargin

case { 0 , 1 } %如果输入参数个数不对,提示错误 error('缺少输入参数'); end

- 19 -

通信系统综合设计与实践

[hn,vn …… 此处隐藏:2737字,全部文档内容请下载后查看。喜欢就下载吧 ……

基于Matlab的CDMA通信系统仿真(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/448474.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)