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

3G开发

开发平台:

Matlab

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