首页 > 编程知识 正文

常用序列及序列运算的matlab实现,直接序列扩频

时间:2023-05-04 21:15:27 阅读:108267 作者:1832

由于该楼层涉嫌违规,系统将其折叠并隐藏,以显示该楼层

%主程序

function [ber]=dscdma(user,seq )

%{

user:同时进行扩频通信的用户数

seq:扩频码选择:1.M序列2 .黄金序列3 .正交黄金序列

ber:此用户数的错误率

%}

%初始化

sr=256000.0;

nSymbol=1000;

M=4;

br=Sr*log2(m;

graycode=[0 1 3 2];

EbNo=0:1:10;

%脉冲成形滤波器参数

延迟=10;

Fs=8;

rolloff=0.5;

RCfilter=rcosine(1,Fs,' fir/sqrt ',rolloff,delay ); 设计%根升余弦滤波器

%扩频码生成参数

用户=4;

阶段=3;

ptap1=[1 3];

ptap2=[2 3];

regi1=[1 1 1];

regi2=[1 1 1];

%扩频码的生成

switch seq

case 1 %M序列

code=mseq(stage,ptap1,regi1,user );

第2类

m1=mseq(stage,ptap1,regi1); %Gold序列

m2=mseq(stage,ptap2,regi2);

code=goldseq(m1,m2,user );

第3类

m1=mseq(stage,ptap1,regi1); %正交Gold序列

m2=mseq(stage,ptap2,regi2);

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

结束

代码=代码*2- 1;

clen=length (代码;

%衰落信道参数

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

t=(0: nsymbol * fs * clen-12 * delay * fs ) ts; 每%s/n的符号传输时间

fd=160; %多普勒频移【HZ】

h=Rayleigh(FD,t ); %衰落信道的生成

%开始模拟

for indx=1:长度(ebno )

%发送方

DATA=randsrc(user,nSymbol,0:3 ); %为每个用户生成发送数据

data1=graycode(data1;

data1=QAMmod(data1,m ); %4-QAM调制

[out]=spread(data1,code ); %扩散

out1=Rcosflt(out.',sr,Fs*sr,' filter ',rrcfilter ); 通过%脉冲成形过滤器

spow=sum(ABS () out1) ).^2)/nSymbol; 计算每个%用户的信号功率

国际足球甲级联赛

out1=sum(out1. ' ); %用户数大于1,将对所有用户数据进行加法运算

结束

通过zsdcb衰落信道

out1=h.*out1;

%接收方

%信噪比计算高斯白噪声方差

sigma=sqrt (0.5 * spow * Sr/br * 10 ^ (-ebno ) indx )/10 );

y=[];

for ii=1:用户

添加%高斯白噪声(AWGN )

y(ii, )=out1sigma(ii ).* ) randn(1,length ) out1) ) j*randn(1) 1,length ) out1) );

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

结束

y=Rcosflt(y.',sr,Fs*sr,' Fs/filter ',rrcfilter ); 用%脉冲成形滤波器过滤

y=downsample(y,Fs ); %下采样

for ii=1:用户

y1(3360,ii )=y )2*Delay1:end-2*Delay,ii );

结束

yd=despread(y1.',code ); %取消扩展数据

demodata=QAMdemod(yd,m ); %4-QAM解调

demodata=graycode(demodata1; %Gray编码反向映射

[err,ber(indx ) ]=biterr (数据(1, ),数据(1, ),log2(M ) m );

结束

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。