stbc_decode.m
上传用户:look542
上传日期:2009-06-04
资源大小:784k
文件大小:2k
源码类别:

传真(Fax)编程

开发平台:

Matlab

  1. function  decoded = stbc_decode(R,H,Idx_data,N_Tx_ant,N_subc)
  2. % 2发STBC解码
  3. if N_Tx_ant == 2 
  4.     
  5.     Xe = zeros(N_subc,1);
  6.     Xo = zeros(N_subc,1);
  7.     
  8.     R1 = R(Idx_data,1);     R2 = R(Idx_data,2);
  9.     
  10.     H1 = H(Idx_data,1,1);     H2 = H(Idx_data,1,2);
  11.     
  12.     Xe(Idx_data,1) = (conj(H1).*R1 + H2.*conj(R2))./(abs(H1).^2 + abs(H2).^2);
  13.     Xo(Idx_data,1) = (conj(H2).*R1 - H1.*conj(R2))./(abs(H1).^2 + abs(H2).^2);
  14.     
  15.     decoded = [Xe Xo];
  16.     
  17. % 4发STBC解码
  18. elseif N_Tx_ant == 4
  19.     
  20.     decoded = zeros(N_subc,N_Tx_ant);
  21.     
  22.     H1 = H(Idx_data,1,1);
  23.     H2 = H(Idx_data,1,2);
  24.     H3 = H(Idx_data,1,3);
  25.     H4 = H(Idx_data,1,4);
  26.     
  27.     R1 = R(Idx_data,1);
  28.     R2 = R(Idx_data,2);
  29.     R3 = R(Idx_data,3);
  30.     R4 = R(Idx_data,4);
  31.     R5 = R(Idx_data,5);
  32.     R6 = R(Idx_data,6);
  33.     R7 = R(Idx_data,7);
  34.     R8 = R(Idx_data,8);
  35.     
  36.     denominator = ( H1.*conj(H1) + H2.*conj(H2) + H3.*conj(H3) + H4.*conj(H4) ) * 2;
  37.     
  38.     X1 = ( R1.*conj(H1) + R2.*conj(H2) + R3.*conj(H3) + R4.*conj(H4) + conj(R5).*H1 + conj(R6).*H2 + conj(R7).*H3 + conj(R8).*H4 )./denominator;
  39.     X2 = ( R1.*conj(H2) - R2.*conj(H1) - R3.*conj(H4) + R4.*conj(H3) + conj(R5).*H2 - conj(R6).*H1 - conj(R7).*H4 + conj(R8).*H3 )./denominator;
  40.     X3 = ( R1.*conj(H3) + R2.*conj(H4) - R3.*conj(H1) - R4.*conj(H2) + conj(R5).*H3 + conj(R6).*H4 - conj(R7).*H1 - conj(R8).*H2 )./denominator;
  41.     X4 = ( R1.*conj(H4) - R2.*conj(H3) + R3.*conj(H2) - R4.*conj(H1) - conj(R5).*H4 - conj(R6).*H3 + conj(R7).*H2 - conj(R8).*H1 )./denominator;
  42.     
  43.     decoded(Idx_data,1) = X1;
  44.     decoded(Idx_data,2) = X2;
  45.     decoded(Idx_data,3) = X3;
  46.     decoded(Idx_data,4) = X4;
  47.     
  48. end