📄 m_cov_cul03_unmodule_precise.m
字号:
%*********** 1023点m序列的产生 ****************%
clear;
clc;
close all;
cof1=4;
cof2=9;
N=9
number=2^N-1
m=zeros(1,number);
for i=1:N
m(i)=1;
end
p=0;
i=1;
for i=N+1:number
m(i)=(((~m(i-N+cof1))&m(i-cof2))|(m(i-N+cof1)&(~m(i-cof2))));
end
m;
for p=1:number
if(m(p)==0)
m(p)=1;
else
m(p)=-1;
end
end
%******************* m序列调制 ***************************%
signal1=[-1]; %输入信号1
n1=length(signal1);
code1=zeros(1,n1);
for i=1:n1
%if(signal(i)==1)
sig_m1((i-1)*number+1:i*number)=m(1:number)*signal1(i);
%else
%sig_m((i-1)*511+1:i*511)=-m(1:511);
%end
end
signal2=[1]; %输入信号2
n2=length(signal2);
code2=zeros(1,n2);
for i=1:n2
%if(signal(i)==1)
sig_m2((i-1)*number+1:i*number)=m(1:number)*signal2(i);
%else
%sig_m((i-1)*511+1:i*511)=-m(1:511);
%end
end
signal3=[-1]; %输入信号3
n3=length(signal3);
code3=zeros(1,n3);
for i=1:n3
%if(signal(i)==1)
sig_m3((i-1)*number+1:i*number)=m(1:number)*signal3(i);
%else
%sig_m((i-1)*511+1:i*511)=-m(1:511);
%end
end
%******************* 载频调制 ***************************%
n=n1;
l=7;
time1=0;
time2=2;
time3=4;
%****************** 三路信号叠加 ************************%
for i=1:time1
sig3_m(i)=0;
end
for i=time1+1:time2
sig3_m(i)=sig_m1(i-time1);
end
for i=time2+1:time3
sig3_m(i)=sig_m1(i-time1)+sig_m2(i-time2);
end
for i=time3+1:n*number+time1
sig3_m(i)=sig_m1(i-time1)+sig_m2(i-time2)+sig_m3(i-time3);
end
for i=n*number+time1+1:n*number+time2
sig3_m(i)=sig_m2(i-time2)+sig_m3(i-time3);
end
for i=n*number+time2+1:n*number+time3
sig3_m(i)=sig_m3(i-time3);
end
for i=n*number+time3+1:n*number+l
sig3_m(i)=0;
end
%***************** 加入高斯噪声 **************************%
snr=-10;
s_input=awgn(sig3_m,snr);
%s_input=sig3_m;
%**************** m序列解调 *****************************%
%s_m_demodule=zeros(1,n*511*f2/f1);
%%%%%%%%%%%%%%%%% 10倍采样 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
input=zeros(1,10*(n*number+l));
for i=1:n*number+l
input(10*(i-1)+1:10*i)=fix(s_input(i));%未经调制
end
%input=input';
for i=1:number
m1(10*(i-1)+1:10*i)=m(i);
end
gate=3000
%%%%%%%%%%%%%%% 相关运算1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
time=0
sum=0;
a=0;
sum1=0;
%for j=1:31
for j=1:number
for i=1:number*10
%if(signal(i)==1)
sum=sum+input(time+i)*m1(i);
%else
%sig_m((i-1)*511+1:i*511)=-m(1:511);
%end
end
if(abs(sum)>gate)
a=time;
break;
end
time=time+1;
sum=0;
end
sum=0;
for t=a:a+10
for i=1:number*10
%if(signal(i)==1)
sum=sum+input(t+i)*m1(i);
%else
%sig_m((i-1)*511+1:i*511)=-m(1:511);
%end
end
if(sum1<abs(sum))
sum1=abs(sum);
del=t;
end
sum=0;
end
a=del;
%%%%%%%%%%%%%%% 解调1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
sum=0;
for j=1:n1
for i=(j-1)*number+1:j*number*10
%if(signal(i)==1)
sum=sum+input(a+i)*m1(i-(j-1)*number);
%else
%sig_m((i-1)*511+1:i*511)=-m(1:511);
%end
end
if(sum>gate)
code1(j)=1;
elseif(sum<-gate)
code1(j)=-1;
end
sum=0;
end
%%%%%%%%%%%%%%% 相关运算2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
time=a+10;
sum=0;
b=0;
sum1=0;
sum3=0
%for j=1:31
for j=1:number
for i=1:number*10
%if(signal(i)==1)
sum=sum+input(time+i)*m1(i);
%else
%sig_m((i-1)*511+1:i*511)=-m(1:511);
%end
end
if(abs(sum)>gate)
b=time
sum3=sum
break;
end
time=time+1;
sum=0;
end
sum=0;
for t=b:b+9
for i=1:number*10
%if(signal(i)==1)
sum=sum+input(t+i)*m1(i);
%else
%sig_m((i-1)*511+1:i*511)=-m(1:511);
%end
end
sum2(t-b+1)=sum;
if(sum1<abs(sum))
sum1=abs(sum);
del=t;
end
sum=0;
end
b=del;
%%%%%%%%%%%%%%% 解调2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
sum=0;
for j=1:n1
for i=(j-1)*number+1:j*number*10
%if(signal(i)==1)
sum=sum+input(b+i)*m1(i-(j-1)*number);
%else
%sig_m((i-1)*511+1:i*511)=-m(1:511);
%end
end
if(sum>gate)
code2(j)=1;
elseif(sum<-gate)
code2(j)=-1;
end
sum=0;
end
%%%%%%%%%%%%%%% 相关运算3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
time=b+10;
sum=0;
c=0;
sum1=0;
%for j=1:31
for j=1:number
for i=1:number*10
%if(signal(i)==1)
sum=sum+input(time+i)*m1(i);
%else
%sig_m((i-1)*511+1:i*511)=-m(1:511);
%end
end
if(abs(sum)>gate)
c=time;
break;
end
time=time+1;
sum=0;
end
sum=0;
for t=c:c+10
for i=1:number*10
%if(signal(i)==1)
sum=sum+input(t+i)*m1(i);
%else
%sig_m((i-1)*511+1:i*511)=-m(1:511);
%end
end
sum
if(sum1<abs(sum))
sum1=abs(sum);
del=t;
end
sum=0;
end
c=del;
%%%%%%%%%%%%%%% 解调3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
sum=0;
for j=1:n1
for i=(j-1)*number+1:j*number*10
%if(signal(i)==1)
sum=sum+input(c+i)*m1(i-(j-1)*number);
%else
%sig_m((i-1)*511+1:i*511)=-m(1:511);
%end
end
if(sum>gate)
code3(j)=1;
elseif(sum<-gate)
code3(j)=-1;
end
sum=0;
end
a
b
c
code1
code2
code3
input=input';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -