📄 watch_rake.asv
字号:
close all;
clear all;
A=[1 1 1 1 0 0 0 1 0 0 1 1 0 1 0];%用户A扩频码
B=[1 1 0 0 1 0 0 0 1 1 1 1 0 1 0];
h=[0.6,0.8];%多径信道
A1=2*A-1;%BPSK调制
B1=2*B-1;
errcount=0;
tercount=0;
mod_angle=exp(j*[1/2*pi 0 pi -1/2*pi]);
for m=1:100000
src=[i,-1,1];%用户A信源比特
%src_B=[-1,1 1];%信源比特
src_B=[i,-1,1];
L_src=length(src);
Lm=length(A);%扩频码长度
Lh=length(h);%信道长度
snd=[];
snd_B=[];
for k=1:1:L_src
tt=A1*src(k);
snd=[snd,tt];%发送chip数组,前16chip是第一比特。。。
tt_B=B1*src_B(k);
snd_B=[snd_B,tt_B];
end
%The signals after the multi-path channel
L=Lm*L_src;%发送的chip序列
L1=L+Lh+3;%加上信道传输延迟
y=zeros(1,L1);%置接收信号长度和令初始值为0
y_B=zeros(1,L1);
%for k=1:1:Lh
% y(1,k:L+k-1)=y(1,k:L+k-1)+snd*h(k);% 经多径信道传播以后的chip数组
% y_B(1,k:L+k-1)=y_B(1,k:L+k-1)+snd_B*h(k);
%end
for k = 1:Lh
y(1,(k-1)*4+1:L+(k-1)*4) = y(1,(k-1)*4+1:L+(k-1)*4)+snd*h(k);
y_B(1,(k-1)*4+1:L+(k-1)*4)=y_B(1,(k-1)*4+1:L+(k-1)*4)+snd_B*h(k);
end
y=y+y_B;
%figure(1)%是chip的图
%plot(y);
%Rake receiver
%Detect the first bit of userA
a1=sum(y(1:Lm).*A1);%相干RAKE(*扩频码)
b1=sum(y(5:(Lm+4)).*A1);%第二径比第一径有一个chip 延迟
r1=(a1+b1)/Lm
dist=abs(mod_angle-r1); %确定与星座图点的距离
[temp,index]=min(dist);
sr1=mod_angle(index);
%Detect the second bit
a2= sum( y((Lm+1):(Lm+Lm)).*A1 );
b2= sum( y((Lm+5):(Lm+Lm+4)).*A1 );
r2=(a2+b2)/Lm
dist=abs(mod_angle-r2); %确定与星座图点的距离
[temp,index]=min(dist);
sr2=mod_angle(index);
%Detect the third bit
a3= sum( y((2*Lm+1):(2*Lm+Lm)).*A1 );
b3= sum( y((2*Lm+5):(2*Lm+Lm+4)).*A1 );
r3=(a3+b3)/Lm
%15扩频,bpsk,2径RAKE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -