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

传真(Fax)编程

开发平台:

Matlab

  1. function output=decode_MMSE(Y,H,Cons,No)
  2. % Cons=1/2*[1  -1];
  3. len=size(H);
  4. S=zeros(1,len(2));
  5. output1=zeros(1,len(2));
  6. output2=zeros(1,len(2));
  7. for i=1:1:len(2)
  8.     S(i)=i;
  9. end
  10. for i=1:1:len(2)
  11.     G=pinv(H'*H+No*eye(len(2)))*H';
  12.     m=zeros(1,len(2)-i+1);
  13.     for k=i:1:len(2)
  14.         m(k-i+1)=norm(G(k,:));
  15.     end
  16.     n=find(m==min(m));
  17.     n1=n+i-1;         
  18.     temp=S(i);
  19.     S(i)=S(n1);
  20.     S(n1)=temp;
  21.     temp=H(:,i);
  22.     H(:,i)=H(:,n1);
  23.     H(:,n1)=temp;
  24.     w=G(n1,:);
  25.     y=w*Y;
  26.     for k=1:1:2
  27.         M(k)=(y-Cons(k))*conj(y-Cons(k));
  28.     end
  29.     output1(1,i)=Cons(find(M==min(M)));
  30.     Y=Y-H(:,i).*output1(1,i); %干扰消除
  31.     H(:,i)=zeros(len(1),1);   %把范数最小的行对应的H中的列全部迫零
  32. end
  33. for i=1:1:len(2)  %恢复发送数据的顺序
  34.     temp=S(i);
  35.     output(1,temp)=output1(1,i);
  36. end