mlmethod.m
上传用户:jeffyma
上传日期:2017-08-11
资源大小:4k
文件大小:3k
源码类别:

软件测试

开发平台:

Matlab

  1. %%%%最大似然ML  最大似然方法联合实现符号定时同步和载波同步仿真
  2. clear all;
  3. %********************** preparation part ***************************
  4. para=128;   % Number of parallel channel to transmit (points) %并行信道传输个数
  5. fftlen=128; % FFT length %fft 长度
  6. noc=1024;    % Number of carrier %载波的个数
  7. nd=6;       % Number of information OFDM symbol for one loop%OFDM symbol 循环个数的说明?
  8. ml=2;       % Modulation level : QPSK %调制方式:QPSK
  9. sr=250000;  % Symbol rate  %符号的比特率
  10. br=sr.*ml;  % Bit rate per carrier %每个载波的比特率?
  11. gilen=128;   % Length of guard interval (points)%%保护间隔的长度
  12. ebn0=3;     % Eb/N0  %Eb为单位比特的平均信号的能量;n0为噪声的单边功率普密度
  13. SNR=15;     % ENR  %信噪比
  14. T=10^(-6);   % Sampling time : 1us%%采样时间1us 抽样频率1024kHz
  15. %************************** transmitter发射机 *********************************
  16. %************************** Data generation 数据生成程序**************************** 
  17. seldata=rand(1,para*nd*ml)>0.5;  %  rand : built in function  %产生1x(128*6*2)=1X1536的数据
  18. M=length(seldata)/noc;
  19. %****************** Serial to parallel conversion串并转换 ***********************
  20. paradata=reshape(seldata,para,nd*ml); %  reshape : built in function
  21. %************************** QPSK modulation %QPSK 调制***************************** 
  22. [ich,qch]=qpskmod(paradata,para,nd,ml);
  23. kmod=1/sqrt(2); %  sqrt : built in function
  24. ich1=ich.*kmod;%实部的数据
  25. qch1=qch.*kmod;%虚部的数据
  26. %******************* IFFT ************************
  27. x=ich1+qch1.*i;
  28. y=ifft(x);      %  ifft : built in function
  29. ich2=real(y);   %  real : built in function
  30. qch2=imag(y);   %  imag : built in function
  31. %********* cyclic perfix insertion 循环保护间隔**********
  32. [ich3,qch3]= giins(ich2,qch2,fftlen,gilen,nd);
  33. fftlen2=fftlen+gilen;
  34. %***************** AWGN addition 叠加在 AWGN信道上********* 
  35. ich4=AWGN(ich3,SNR);
  36. qch4=AWGN(qch3,SNR);
  37. rx=ich4+qch4.*i;%叠加噪声之后的数据
  38. %****************** Calculate gamma(m) & PI(m) *******************
  39. gamma =zeros(M,noc);
  40. lamda =zeros(M,noc);
  41. pii =zeros(M,noc);
  42. ro = SNR/(SNR+1);
  43. e=0.25;
  44. for n=1:M
  45.     for theta=1:noc
  46.       
  47.          sampling_rx(n,:)=[rx(n,1:theta) rx(n,:) rx(n,1:noc-theta)]; 
  48.          %sampling_rx=[rx(n,1:theta) rx(n,:) rx(n,1:noc-theta)];   
  49.          %sampling_rx(n,:)=[zeros(1,theta) rx(n,:) zeros(1,noc-theta)];
  50.          
  51.        for k=theta:theta+gilen-1
  52.                 %equation 2-(6),2-(7)                
  53.                 gamma(n,theta)= gamma(n,theta)+sampling_rx(n,k)*conj(sampling_rx(n,k+noc));
  54.                 pii(n,theta)=pii(n,theta)+abs(sampling_rx(n,k))^2 + abs(sampling_rx(k+noc))^2;
  55.        end
  56.         gamma(n,theta)
  57.        pii(n,theta)=0.5*pii(n,theta);
  58.         
  59.         %equation 2-(5)
  60.         lamda(n,theta)=abs(gamma(n,theta))*cos(2*pi*e+angle(gamma(n,theta))) - ro*pii(n,theta);
  61.         
  62.     end
  63. end
  64. t=T:T:noc*T;
  65. figure(1);
  66. plot(abs(gamma(1,:)))
  67. figure(2);
  68. plot(pii(1,:))
  69. figure(3);
  70. plot(lamda(1,:))
  71. figure(4)
  72. plot(real(sampling_rx(1,:)))
  73. figure(5);
  74. plot(t,lamda(1,:))