BLAST_decode.m
资源名称:MIMO-OFDM.rar [点击查看]
上传用户:look542
上传日期:2009-06-04
资源大小:784k
文件大小:1k
源码类别:
传真(Fax)编程
开发平台:
Matlab
- function output=BLAST_decode(Y,H,Cons,hard_soft,LST_method,var_noise)
- %-------------------------------------------------------------------
- % 输入参数 Y表示的是接收信号
- % Y Nc×1×Nr,Y为一个三维的矩阵
- % 输入参数 H 表示的是信道响应矩阵
- % H Nc×1×(Nt*Nr),H为一个三维的矩阵
- % Nc表示的是载波数(频率维),1表示的是时间(时间维),Nt×Nr表示的是天线(空间维)
- %-------------------------------------------------------------------
- len1=size(Y); %矩阵的维数
- len2=size(H); %矩阵的维数
- if len1(1)~=len2(1)
- fprintf('输入的参数不对,Y与H的载波数不对应')
- else
- %for k=1:1:len1(1) %把信道响应矩阵进行适当地变化,变成 h Nr×Nt×Nc
- for m=1:1:len1(3) % m为接收天线数
- for n=1:1:len2(3)/len1(3) %n为发送天线数
- h(m,n,:)=H(:,1,(m-1)*4+n);
- end
- end
- %end
- for k=1:1:len1(1) %把Y矩阵进行适当的变化,y Nr×1×Nc
- for m=1:1:len1(3)
- y(m,1,k)=Y(k,1,m);
- end
- end
- for k=1:1:len1(1) %对每个子载波上的符号进行解码
- if LST_method == 1
- output(k,:)=(decode1(y(:,1,k),h(:,:,k),Cons,hard_soft)).';
- elseif LST_method == 2
- output(k,:) = decode_MMSE(y(:,1,k),h(:,:,k),Cons,var_noise);
- end
- end
- end