%直接序列扩频主程序代码
function [ber] = dscdma(user,seq)
%DSCDMA 此处显示有关此函数的摘要
% 此处显示详细说明
% user:同时进行扩频通信的用户数
% seq:扩频码1:m-序列 扩频码2:Gold-序列 扩频码3:正交Gold-序列
% ber:该用户数下的误码率
%初始化
sr = 256000.0; %符号速率
nSymbol = 10000; %每种信噪比下发送的符号数
M = 4; %4-QAM调制
br = sr*log2(M); %比特速率
graycode = [0 1 3 2]; %Gray编码规则
EbNo = 0:2:10; %Eb/N0变化范围
%%%脉冲成形滤波器参数%%%
delay = 10; %升余弦滤波器时延
Fs = 8; %滤波器过采样数
rolloff = 0.5; %升余弦滤波器滚降因子
rrcfilter = rcosine(1,Fs,'fir/sqrt',rolloff,delay); %设计根升余弦滤波器
%%%扩频码产生参数%%%
user = 4; %用户数
stage = 3; %m序列的阶数
ptap1 = [1 3]; %m序列1的寄存器连接方式
ptap2 = [2 3]; %m序列2的寄存器连接方式
regi1 = [1 1 1]; %m序列1的寄存器初始值
regi2 = [1 1 1]; %m序列1的寄存器初始值
%%%扩频码的生成%%%
switch seq
case 1 %M序列
code = mseq(stage,ptap1,regi1,user);
case 2
m1 = mseq(stage,ptap1,regi1); %Gold序列
m2 = mseq(stage,ptap2,regi2);
code = goldseq(m1,m2,user);
case 3
m1 = mseq(stage,ptap1,regi1); %正交Gold序列
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; %每种信噪比下的符号传输时间
% fd=160; %多普勒频移[HZ]
% h=rayleigh(fd,t); %生成衰落信道
%%%仿真开始%%
for indx=1:length(EbNo)
%发射端
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
out1 = sum(out1.'); %用户数大于1,所有用户数据相加
else
out1 = out1.';
end
%%%通过瑞利衰落信道%%
% out1=h.*out1;
%接收端
sigma = sqrt(0.5*spow*sr/br*10^(-EbNo(indx)/10)); %根据信噪比计算高斯白噪声方差
y = [];
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(1,:),demodata(1,:),log2(M));
end
没有合适的资源?快使用搜索试试~ 我知道了~
基于Matlab和Simulink实现CDMA仿真系统(源码+数据).rar
共18个文件
m:8个
mat:6个
l:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 6 下载量 47 浏览量
2023-03-23
14:18:58
上传
评论 4
收藏 97KB RAR 举报
温馨提示
1、资源内容:基于Matlab和Simulink实现CDMA仿真系统(源码+数据).rar 2、适用人群:计算机,电子信息工程、数学等专业的学习者,作为“参考资料”参考学习使用。 3、解压说明:本资源需要电脑端使用WinRAR、7zip等解压工具进行解压,没有解压工具的自行百度下载即可。 4、免责声明:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。不一定能够满足所有人的需求,需要有一定的基础能够看懂代码,能够自行调试代码并解决报错,能够自行添加功能修改代码。由于作者大厂工作较忙,不提供答疑服务,如不存在资源缺失问题概不负责,谢谢理解。
资源推荐
资源详情
资源评论
收起资源包目录
基于Matlab和Simulink实现CDMA仿真系统(源码+数据).rar (18个子文件)
基于Matlab和Simulink实现CDMA仿真系统(源码+数据)
dscdma.m 2KB
spread.m 466B
shift.m 479B
mseq.m 620B
slprj
_jitprj
G2MH27yFutSEkPW41TuKqD.l 36KB
G2MH27yFutSEkPW41TuKqD.mat 11KB
jitEngineAccessInfo.mat 766B
8EDQcDY5hGxkLDeMGEhX0G.mat 11KB
8EDQcDY5hGxkLDeMGEhX0G.l 36KB
_cgxe
cdma2000SimulinkExample
cdma2000SimulinkExample_Cache.mat 23KB
sim
varcache
cdma2000SimulinkExample
checksumOfCache.mat 392B
varInfo.mat 1KB
tmwinternal
simulink_cache.xml 244B
cdma2000SimulinkExample.slxc 4KB
goldseq.m 381B
mseq_1.m 84B
despread.m 412B
ds_3.m 350B
共 18 条
- 1
Matlab仿真实验室
- 粉丝: 3w+
- 资源: 2406
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页