⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m_cov_cul01_module.m

📁 该程序用以对PSK程序的调制解调的仿真
💻 M
字号:
%******** 1023点的2psk调制(f=
%*********** 1023点m序列的产生 ****************%
clear;
clc;
close all;
k11=4
k21=9
N=9
number=2^N-1
b1=zeros(1,number+N);
for i=1:N
    b1(i)=1;
end
a=zeros(1,number+6);
c1=0;
d1=0;
b0=zeros(number,1);
p=0;
i=1;
for i=N+1:number+N
b1(i)=(((~b1(i-N+k11))&b1(i-k21))|(b1(i-N+k11)&(~b1(i-k21))));
end
b1;
for p=1:number
if(b1(p)==0)
  b1(p)=1;
else
  b1(p)=-1;
end
end
fft_time=4;
m_time=3;
m_length=6;
for p=1:m_time
    a(p)=b1(p+number-m_time);
end
for p=1+m_time:number+m_time
    a(p)=b1(p-m_time);
end
for p=number+m_time+1:number+m_length
    a(p)=b1(p-number-m_time);
end
a;
b0=a';

%**************相关运算*****************%
%for p=1:number
%    c=c+a(p)*b(p);
%    d=d+a(p+7)*b(p);
%end
%c
%d
%2FSK调制,载频为488.3KHz
%-------------------------------
a;                    %输入信号
n=length(a);
k1=-4200000;             %信号为0时的频率
k2=4200000;             %信号为1是的频率
k3=number*10;              %波特率
k4=800*number;            %采样频率
c=zeros(1,n*k4/k3);  %采样数据个数,每个比特内采样数据为k4/k3
b=zeros(1,n);        %输出信号
N=8;                %16点的FFT
d=zeros(1,N);       
for i=1:n
    t=0:1/k4:1/k3-1/k4;
    if(a(i)==-1)
        c((i-1)*k4/k3+1:i*k4/k3)=sin(2*pi*k2*t);
    else
         c((i-1)*k4/k3+1:i*k4/k3)=sin(2*pi*k1*t);
    end
end                  %得到采样数据c
t1=0:1/k4:n/k3-1/k4;figure(1);
plot(t1,c);          %基带信号
f1=488300;           %调制频率为488.3kHz
e=sin(2*pi*f1*t1);
cf=c.*e;             %调制后数据中频为490kHz
t1=0:1/k4:n/k3-1/k4;figure(2);
plot(t1,cf);         %调制信号   
snr=25;             
cf=awgn(cf,snr);     %加入高斯百噪声,信噪比为15dB
t1=0:1/k4:n/k3-1/k4;figure(3);
plot(t1,cf);         %加入噪声后的信号cf
%cg=cf;
cg=downsample(c,10); %cf换为c,未经调制
%p=zeros(1,N);
%t2=0:1/k4*10:n/k3-1/k4*10;
%p=fft(cg,N);
%figure(4),plot(t2*100*N,p)
cd=zeros(1,N);
for m=1:n
    X=0;
    Y=0;
for i=1:N
   
    %if(i<=10)
    cd(i)=cg(i+N*(m-1));
    %else
     %   cd(i)=0;
    %end
    X=X+cd(i)*exp(-j*2*pi*2*(i-1)/N);  %计算X(16),对应频率为1800Hz ,为0   
    Y=Y+cd(i)*exp(-j*2*pi*7*(i-1)/N);   %计算X(18),对应频率为1600Hz,为1
end;
rex=real(X);
imx=imag(X);
rey=real(Y);
imy=imag(Y);
X=abs(X)^2;
Y=abs(Y)^2;
if(rex>0)
    b(m)=1;
else
    b(m)=-1;
end                     %判决
for g=1:N
    W=0;
    for i=1:N
         W=W+cd(i)*exp(-j*2*pi*g*(i-1)/N);
    end
    d(g)=abs(W)^2;
end
t=1:N;
figure(5);
plot(t,d);               %求一个周期16点的DFT
end
b;
if(a==b)
    right=1;
else
    right=0;
end
n
right                    %right=1则检测正确
data=zeros(n*N,1);
for i=1:n*N
  data(i)=fix(cg(i)*32768);%cg换为c,未经调制
end
d0=zeros(1,N*2*n);
for i=1:N*n
d0(2*i-1)=data(i);
end
e0=d0';
for i=1:number*5
    mn(i)=data(i);
end
for i=number*5+1:number*8+6*8
    nm(i-number*5)=data(i);
end
fft_data=fix(randn(fft_time,1)*32768/3);
%m_time=3
for i=1:fft_time
    input(i)=fft_data(i);
end
for i=fft_time+1:fft_time+8*(number+m_length)
    input(i)=data(i-fft_time);
end
input=input';
close all;
        
        
        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -