📄 ds.asv
字号:
%====Spread Spectrum system====
clear;
pic=1;
%===定义参数=======
len=128; %二进制信号长度
ds=63; %直序扩频倍数
len_ss=len*ds; %扩频信号长度
wv=64; %交织深度
bpsk_r=8; %BSPK上采样率
sigma=0.3; %AWGN信道噪声标准差
%====生成四一零码======
bit_sig=ones(1,len);
i=5:5:len;
bit_sig(i)=0;
%========扰码===========
inter_sig=inter_bit(bit_sig);
%========交织(深度64)===========
weave_sig=zeros(1,len);
for i=0:len/wv-1 % 将原始信号分成64个一组进行交织
for j=1:sqrt(wv)
weave_sig(i*wv+(j-1)*sqrt(wv)+1:i*wv+j*sqrt(wv))=inter_sig(i*wv+j:sqrt(wv):i*wv+wv);
end;
end;
%======GOLD序列生成=========
con1=[1 1 0 0 0 0 1]; % x2(1)=c(1)*x1(1)+c(2)*x1(2)+...+c(n)*x1(n)
con2=[1 1 1 0 0 1 1];
reg_m=length(con1)-1;
seq_l=2^reg_m-1;
seq_m1=ss_m(con1);
seq_m2=ss_m(con2);
seq_gold=mod(seq_m1+seq_m2,2);
%========直序扩频=============
widen_sig=zeros(1,len_ss);
for i=0:len-1
widen_sig((i*ds+1):(i+1)*ds)=weave_sig(i+1);
end;
seq_ss=zeros(1,len_ss);
for i=1:seq_l:len_ss
seq_ss(i:i+seq_l-1)=seq_gold;
end;
ss_sig=~seq_ss.*widen_sig+seq_ss.*~widen_sig;
%=======BPSK调制===========
bpsk_sig=zeros(1,length(ss_sig)*bpsk_r);
for i=1:length(ss_sig)
if ss_sig(i)==1
bpsk_sig((i-1)*bpsk_r+1:i*bpsk_r) =[1 0 0 0 0 0 0 0];
else bpsk_sig((i-1)*bpsk_r+1:i*bpsk_r)=[0 1 1 1 1 1 1 1];
end;
end;
%======AWGN信道==============
rec_sig=bpsk_sig+sigma.*randn(1,length(bpsk_sig));
% rec_sig=bpsk_sig;
%=======BPSK解调=============
rebpsk_sig=rec_sig(1:bpsk_r:length(rec_sig));
%=======相关解扩=============
ress_sig=~seq_ss.*rebpsk_sig+seq_ss.*~rebpsk_sig;
narr_sig=ress_sig(1:ds:length(ress_sig));
%========解交织===============
reweave_sig=zeros(1,len);
for i=0:len/wv-1 % 将原始信号分成64个一组进行交织
for j=1:sqrt(wv)
reweave_sig(i*wv+(j-1)*sqrt(wv)+1:i*wv+j*sqrt(wv))=narr_sig(i*wv+j:sqrt(wv):i*wv+wv);
end;
end;
%========解扰===============
reinter_sig=inter_bit(reweave_sig);
%=====显示数据========
% %----四一零码、扰码、交织信号-----
% figure(pic);
% pic=pic+1;
% subplot(3,1,1);
% stem(bit_sig,'.');
% axis([0 length(bit_sig) -0.2 2]);
% title('四零一信号');
% subplot(3,1,2);
% stem(inter_sig,'.');
% axis([0 length(inter_sig) -0.2 2]);
% title('扰码后信号');
% subplot(3,1,3);
% stem(weave_sig,'.');
% axis([0 length(weave_sig) -0.2 2]);
% title('交织后信号');
% %-----m序列和GOLD序列------
% figure(pic);
% pic=pic+1;
% subplot(3,1,1);
% stem(seq_m1,'.');
% axis([0 length(seq_m1) -0.2 2]);
% title('m序列1');
% subplot(3,1,2);
% stem(seq_m2,'.');
% axis([0 length(seq_m2) -0.2 2]);
% title('m序列2');
% subplot(3,1,3);
% stem(seq_gold,'.');
% axis([0 length(seq_gold) -0.2 2]);
% title('GOLD序列');
% %------扩频信号--------
% figure(pic);
% pic=pic+1;
% subplot(3,1,1);
% stem(widen_sig,'.');
% axis([0 length(widen_sig) -0.2 2]);
% title('交织后信号展宽');
% subplot(3,1,2);
% stem(seq_ss,'.');
% axis([0 length(seq_ss) -0.2 2]);
% title('GOLD序列重复');
% subplot(3,1,3);
% stem(ss_sig,'.');
% axis([0 length(ss_sig) -0.2 2]);
% title('扩频后信号');
% %-----相关解扩--------
% figure(pic);
% pic=pic+1;
% subplot(2,1,1);
% stem(weave_sig,'.');
% axis([0 length(weave_sig) -0.2 2]);
% title('发端交织信号');
% subplot(2,1,2);
% stem(narr_sig,'.');
% axis([0 length(narr_sig) -0.2 2]);
% title('收端相关解扩信号');
% %----解交织--------
% figure(pic);
% pic=pic+1;
% subplot(2,1,1);
% stem(inter_sig,'.');
% axis([0 length(inter_sig) -0.2 2]);
% title('发端扰码信号');
% subplot(2,1,2);
% stem(reweave_sig,'.');
% axis([0 length(reweave_sig) -0.2 2]);
% title('收端解交织信号');
% %----解扰--------
% figure(pic);
% pic=pic+1;
% subplot(2,1,1);
% stem(bit_sig,'.');
% axis([0 length(bit_sig) -0.2 2]);
% title('发端四一零信号');
% subplot(2,1,2);
% stem(reinter_sig,'.');
% axis([0 length(reinter_sig) -0.2 2]);
% title('收端解扰信号');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -