qamdemod.m
上传用户:m_sun_001
上传日期:2014-07-30
资源大小:1115k
文件大小:2k
源码类别:

matlab例程

开发平台:

Matlab

  1. % Program 3-24
  2. % qamdemod.m
  3. %
  4. % Function to decode 16QAM modulation
  5. %
  6. % programmed by R.Funada and H.Harada
  7. %
  8. function [demodata]=qamdemod(idata,qdata,para,nd,ml)
  9. %****************** variables *************************
  10. % idata :input Ich data
  11. % qdata :input Qch data
  12. % demodata: demodulated data (para-by-nd matrix)
  13. % para   : Number of paralell channels
  14. % nd : Number of data
  15. % ml : Number of modulation levels
  16. % (QPSK ->2  16QAM -> 4)
  17. % *****************************************************
  18. k=sqrt(10);
  19. idata=idata.*k;
  20. qdata=qdata.*k;
  21. demodata=zeros(para,ml*nd);
  22. m2=ml/2;       
  23. count2=0; 
  24. for ii = 1:nd
  25.       
  26.     a=1;
  27.     b=1;
  28.     i_lngth=0;
  29.     q_lngth=0;
  30.       
  31.     for jj= 1:m2
  32.         
  33.        if jj ~= 1           
  34.          
  35.            if demodata((1:para),jj-1+count2)==1
  36.                 a=-a;               
  37.             end
  38.       
  39.             if demodata((1:para),m2+jj-1+count2)==1
  40.                 b=-b;
  41.             end
  42.             i_lngth=i_lngth+i_plrty.*2.^(m2-jj+1);
  43.             q_lngth=q_lngth+q_plrty.*2.^(m2-jj+1);
  44.         end
  45.          
  46.         if idata((1:para),ii) >= i_lngth
  47.            demodata((1:para),jj+count2)=a>=0;
  48.            i_plrty=1;
  49.         else
  50.            demodata((1:para),jj+count2)=a<=0;
  51.            i_plrty=-1;
  52.         end
  53.          
  54.         if qdata((1:para),ii) >= q_lngth
  55.            demodata((1:para),m2+jj+count2)=b>=0;
  56.            q_plrty=1;  
  57.         else
  58.      demodata((1:para),m2+jj+count2)=b<=0;
  59.            q_plrty=-1;
  60.         end
  61.             
  62.     end  % for jj= 1:m2
  63.       
  64.     count2=count2+ml;
  65.              
  66.  end  % for ii = 1:nd          
  67. %******************** end of file ***************************