?? m_cov_cul03_unmodule_precise.m
字號(hào):
%*********** 1023點(diǎn)m序列的產(chǎn)生 ****************%
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序列調(diào)制 ***************************%
signal1=[-1]; %輸入信號(hào)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]; %輸入信號(hào)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]; %輸入信號(hào)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
%******************* 載頻調(diào)制 ***************************%
n=n1;
l=7;
time1=0;
time2=2;
time3=4;
%****************** 三路信號(hào)疊加 ************************%
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序列解調(diào) *****************************%
%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));%未經(jīng)調(diào)制
end
%input=input';
for i=1:number
m1(10*(i-1)+1:10*i)=m(i);
end
gate=3000
%%%%%%%%%%%%%%% 相關(guān)運(yùn)算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;
%%%%%%%%%%%%%%% 解調(diào)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
%%%%%%%%%%%%%%% 相關(guān)運(yùn)算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;
%%%%%%%%%%%%%%% 解調(diào)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
%%%%%%%%%%%%%%% 相關(guān)運(yùn)算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;
%%%%%%%%%%%%%%% 解調(diào)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';
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -