求高手指教,matlab下对直扩系统的仿真代码

2024-11-06 08:12:10
推荐回答(1个)
回答1:

具体可去matlab中文论坛 搜索“直扩系统仿真代码”,有几个把

下面是直扩系统仿真程序,第一段是扩频和调制,第二段是m序列生成,求 第一段程序接着编写解扩和解调的程序~
(1)clc
clear
%.............................生成待传输信息,码元宽度为切普宽度的10倍...................
message=randint(1,4);%随机生成4个0 1码
code=[];
for i=1:length(message)
if message(1,i)==0
code1=zeros(1,10);
else
code1=ones(1,10);
end
code=[code,code1];
end
%...............................生成m序列......................................
a=[ 0 1 0 0 1 1 1 ]; %m序列特征多项式
b=[0 0 0 0 0 0 1]; %移位寄存器初始状态
c=length(code); %生成m序列长度
m_sequence=mseq(a,b,c);
dsss=code.*m_sequence;%扩频
%.............................BPSK调制.......................................
f=20; %载波频率,为码元速率二倍
t=0:1/(f-1):1;
cp=[];
mod=[];
for j=1:length(dsss)
if dsss(j)==0
cp1=-ones(1,20);
else
cp1=ones(1,20);
end
c=cos(2*pi*f*t);
cp=[cp,cp1];
mod=[mod,c];
end
bpsk=cp.*mod;
plot(bpsk,'linewidth',1.5);grid on
ylabel('bpsk modulation');
axis([0 20*length(dsss) -2 2]);
(2)
function[seq]=mseq(connections,registers,len)
m=length(connections);
L=2^m-1;%周期长度
if len==0
len=L;
end
fan=0;
for i=1:len
seq(i)=registers(m);
for j=1:m
fan=fan+connections(j)*registers(j);
fan=(mod(fan,2));
end
for t=m:-1:2%寄存器移位
registers(t)=registers(t-1);
end
registers(1)=fan;
fan=0;
end