stbc_decode.m
资源名称:MIMO-OFDM.rar [点击查看]
上传用户:look542
上传日期:2009-06-04
资源大小:784k
文件大小:2k
源码类别:
传真(Fax)编程
开发平台:
Matlab
- function decoded = stbc_decode(R,H,Idx_data,N_Tx_ant,N_subc)
- % 2发STBC解码
- if N_Tx_ant == 2
- Xe = zeros(N_subc,1);
- Xo = zeros(N_subc,1);
- R1 = R(Idx_data,1); R2 = R(Idx_data,2);
- H1 = H(Idx_data,1,1); H2 = H(Idx_data,1,2);
- Xe(Idx_data,1) = (conj(H1).*R1 + H2.*conj(R2))./(abs(H1).^2 + abs(H2).^2);
- Xo(Idx_data,1) = (conj(H2).*R1 - H1.*conj(R2))./(abs(H1).^2 + abs(H2).^2);
- decoded = [Xe Xo];
- % 4发STBC解码
- elseif N_Tx_ant == 4
- decoded = zeros(N_subc,N_Tx_ant);
- H1 = H(Idx_data,1,1);
- H2 = H(Idx_data,1,2);
- H3 = H(Idx_data,1,3);
- H4 = H(Idx_data,1,4);
- R1 = R(Idx_data,1);
- R2 = R(Idx_data,2);
- R3 = R(Idx_data,3);
- R4 = R(Idx_data,4);
- R5 = R(Idx_data,5);
- R6 = R(Idx_data,6);
- R7 = R(Idx_data,7);
- R8 = R(Idx_data,8);
- denominator = ( H1.*conj(H1) + H2.*conj(H2) + H3.*conj(H3) + H4.*conj(H4) ) * 2;
- 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;
- 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;
- 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;
- 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;
- decoded(Idx_data,1) = X1;
- decoded(Idx_data,2) = X2;
- decoded(Idx_data,3) = X3;
- decoded(Idx_data,4) = X4;
- end