qam64_demod.m
上传用户:igold809
上传日期:2021-06-03
资源大小:4k
文件大小:1k
源码类别:

3G开发

开发平台:

Matlab

  1. function demod_out=qam64_demod(demod_in)
  2. d=zeros(64,length(demod_in));
  3. D=zeros(64,length(demod_in));
  4. m=zeros(1,length(demod_in));
  5. temp=[-7-7*j  -7-5*j  -7-j  -7-3*j  -7+7*j  -7+5*j  -7+j  -7+3*j...
  6.     -5-7*j  -5-5*j  -5-j  -5-3*j  -5+7*j  -5+5*j  -5+j  -5+3*j...
  7.     -1-7*j  -1-5*j  -1-j  -1-3*j  -1+7*j  -1+5*j  -1+j  -1+3*j...
  8.     -3-7*j  -3-5*j  -3-j  -3-3*j  -3+7*j  -3+5*j  -3+j  -3+3*j...
  9.     7-7*j   7-5*j   7-j   7-3*j   7+7*j   7+5*j   7+j   7+3*j...
  10.     5-7*j   5-5*j   5-j   5-3*j   5+7*j   5+5*j   5+j   5+3*j...
  11.     1-7*j   1-5*j   1-j   1-3*j   1+7*j   1+5*j   1+j   1+3*j...
  12.     3-7*j   3-5*j   3-j   3-3*j   3+7*j   3+5*j   3+j   3+3*j ]./sqrt(42);
  13. for i=1:length(demod_in)
  14.     for n=1:64
  15.         d(n,i)=(abs(demod_in(i)-temp(n))).^2;
  16.     end
  17.     [min_distance,constellation_point] = min(d(:,i)) ;    %D(:,i)=sort(d(:,i));
  18. %排序 (sort the distance in ascending order.)
  19.     m(i) = constellation_point;
  20. end
  21. A=de2bi([0:63],'left-msb');    %%将十进制数转换为二进制数
  22. for i=1:length(demod_in)
  23.     DEMOD_OUT(i,:)=A(m(i),:);
  24. end
  25. demod_out=reshape(DEMOD_OUT',1,length(demod_in)*6); %%将解调出的序列按行输出