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

传真(Fax)编程

开发平台:

Matlab

  1. function output=BLAST_decode(Y,H,Cons,hard_soft,LST_method,var_noise)
  2. %-------------------------------------------------------------------
  3. % 输入参数 Y表示的是接收信号
  4. % Y   Nc×1×Nr,Y为一个三维的矩阵
  5. % 输入参数 H 表示的是信道响应矩阵
  6. % H  Nc×1×(Nt*Nr),H为一个三维的矩阵
  7. % Nc表示的是载波数(频率维),1表示的是时间(时间维),Nt×Nr表示的是天线(空间维)
  8. %-------------------------------------------------------------------
  9. len1=size(Y);  %矩阵的维数
  10. len2=size(H);  %矩阵的维数
  11. if  len1(1)~=len2(1)
  12.        fprintf('输入的参数不对,Y与H的载波数不对应')
  13. else  
  14.     %for k=1:1:len1(1) %把信道响应矩阵进行适当地变化,变成 h  Nr×Nt×Nc
  15.         for m=1:1:len1(3) % m为接收天线数
  16.             for n=1:1:len2(3)/len1(3) %n为发送天线数
  17.                 h(m,n,:)=H(:,1,(m-1)*4+n);
  18.             end
  19.         end
  20.         %end
  21.     for k=1:1:len1(1)  %把Y矩阵进行适当的变化,y Nr×1×Nc
  22.         for m=1:1:len1(3)
  23.             y(m,1,k)=Y(k,1,m);
  24.         end
  25.     end
  26.     for k=1:1:len1(1) %对每个子载波上的符号进行解码
  27.         if LST_method == 1
  28.             output(k,:)=(decode1(y(:,1,k),h(:,:,k),Cons,hard_soft)).';
  29.         elseif  LST_method == 2
  30.             output(k,:) = decode_MMSE(y(:,1,k),h(:,:,k),Cons,var_noise);
  31.         end
  32.     end
  33. end
  34.