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

📄 gmsk_mod_demod1.m

📁 是GMSK-1DD的极好的仿真程序~~~~~仿真效果极佳
💻 M
字号:
clear all
m=1000;
pi=3.14159;        
id=sqrt(-1);

%-------------------------------------
%码元产生
ran=randn(1,m);                  %随机产生Bpsk的信号比特1或-1
data_sequence=zeros(1,m);
for i=1:m
  if ran(1,i)>0
      data_sequence(1,i)=1;
  else
      data_sequence(1,i)=-1;
  end;  
end;
%-------------------------------------------------------
%波形形成,内插和调制

nn=8;       %每个比特的采样点数nn
Tb=1/4000;
fs=nn/Tb;   %采样速率

I_wave=zeros(1,length(data_sequence)*8);
Q_wave=zeros(1,length(data_sequence)*8);
[I_wave]=wavemod(data_sequence);
figure(1)
hold on
 plot(I_wave,'r.') 
 plot(I_wave,'b-')
 hold off

angle=zeros(1,length(I_wave));
for i=1:length(I_wave)
    for j=1:i
    angle(i)=angle(i)+I_wave(j)/fs;
    end;
    angle(i)=(pi*angle(i)/(2*Tb));
    
    angle(i)=rem(angle(i),2*pi);
end;

%angle=angle(15:14+length(data_sequence)*8);%[I_wave]中前两个点是0,所以去掉
angle=angle(13:12+length(data_sequence)*8);%[I_wave]中前两个点是0,所以去掉

for i=1:length(angle)
    I_loop(i)=cos(angle(i));
    Q_loop(i)=sin(angle(i));
end;

mod_train1=I_loop+Q_loop*id;
%-------------------------------------------------------
SNR=[2,4,6,8,10,12];
SNR=13;
for j=1:length(SNR)
    sigma(j)=sqrt(1/10^(SNR(j)/10));
    for k=1:length(mod_train1)
        nose1(k)=gngauss(sigma(j));
        nose2(k)=gngauss(sigma(j));
    end;
    mod_train=mod_train1+nose1+nose2*id;
    %-----------------------解调------------------------------
    x=real(mod_train);
    y=imag(mod_train);
    decision4=zeros(1,length(data_sequence)-1);
    decision2=zeros(1,length(data_sequence)-1);
    decision3=zeros(1,length(x));
    decision1=zeros(1,length(x));
    A=sqrt(x.^2+y.^2);
    %----------------------------------------------------------------------------------
    %-----------------1比特的判决和误比特率的计算---------------------------------------

    for i=1:8
        y_1(i)=y(i);%/A(i);
        if y_1(i)>=0
           decision1(i)=1;
        else
           decision1(i)=-1;
        end;
    end;
    
    for i=9:length(x)
        y_1(i)=(x(i-8)*y(i)-x(i)*y(i-8));%/(A(i)*A(i-8));
        if y_1(i)>=0
           decision1(i)=1;
        else
           decision1(i)=-1;
        end;
    end;
    figure(2)
    hold on
    plot(y_1,'r.');
    plot(y_1,'b-');
    hold off

    figure(3)
    hold on
    plot( decision1,'r.');
    plot( decision1,'b-');
    hold off
   
    for k=1:length(data_sequence)-1
        decision2(k)=decision1(k*8+3);%去掉参考的一个比特
    end;
    [NUM1,Pe1(j)]=symerr(data_sequence(2:m),decision2)
    
   
    %----------------------1比特解调完成-----------------------------------------
      
end;



































































































































































⌨️ 快捷键说明

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