MIMO系统中ZF破零均衡仿真源码程序 - matlab通信信号 - 谷速源码
下载频道> 资源分类> matlab源码> 通信信号> MIMO系统中ZF破零均衡仿真源码程序

标题:MIMO系统中ZF破零均衡仿真源码程序
分享到:

所属分类: 通信信号 资源类型: 文件大小: 1.67 KB 上传时间: 2016-01-28 20:52:35 下载次数: 11 资源积分:1分 提 供 者: xiaopeng2 MIMO系统中ZF破零均衡仿真源码程序
内容:
MIMO系统中ZF破零均衡仿真源码程序,程序员在编程的过程中可以参考学习使用,希望对IT程序员有用,此源码程序简单易懂、方便阅读,有很好的学习价值!
%--------------------------------------------------------------------------
 
%--------------------------------------------------------------------------
%NOTE:
 
 
 
%--------------------------------------------------------------------------
clear all;
tic
mTx=2;                                         %Number of transmit antennas
nRx=2;                                         %Number of receive antennas
T=1;                                           %Number of time slots
N=500;                                         %Number of trials at a given noise level
L=mTx*T;
nsymb=L*N;                                     %Number of symbol stream
No_uncode = T*N;
 
%4QAM Modulation
Mary=4;
partition = [0];
xcodebook = [-1,1];
%Mary=16;
%partition=[ -2,0,2 ];
%xcodebook=[-3,-1,1,3 ];
ycodebook = xcodebook;
%Finish 4QAM modulation
Es = 2*sum(xcodebook * xcodebook')/size(xcodebook,2); % average symbol energy per antenna
snr=0:2:20;
for bi=1:length(snr)
  errZF=0;
  errZF_DFE=0;
  ro=10^(snr(bi)/10);
  for n=1:No_uncode
       S_out=[];                                 % Symbol stream output_estimate
       S_in = randsrc(mTx,1,xcodebook)+ i*(randsrc(mTx,1,ycodebook)); % Symbol stream input
       S_in1=S_in/sqrt(Es);
       noise=(randn(nRx,1)+i*randn(nRx,1))/sqrt(2);%Get noise
       %noise=(randn(nRx,1)+i*randn(nRx,1))*sqrt(Es/2); 
       uncode_H=(randn(nRx,mTx)+i*randn(nRx,mTx))/sqrt(2);%Get Rayleigh channel
             
       y=sqrt(ro/mTx)*uncode_H*S_in1 + noise; % At receiver
     
%Demodulate via ZF Equalizer
       G_ZF = sqrt(mTx/ro)*pinv(uncode_H);
       S_out=sqrt(Es)*G_ZF*y; % Symbol out of equalizer
      % Decoder
         for ii=1:mTx % detector 
            [o,a(ii)]=quantiz(real(S_out(ii)),partition,xcodebook);
            [o,b(ii)]=quantiz(imag(S_out(ii)),partition,ycodebook);
         end
        S_out_dec = a + i*b;
        err_real= sum (real(S_out_dec)~=real(S_in.'));
        err_imag= sum (imag(S_out_dec)~=imag(S_in.'));
        errZF=errZF+err_real+err_imag;
%End ZF only
 
%ZF-DFE or V-Blast ----------------------------------------------------------------
        H=uncode_H;
        r=sqrt(Es)*y;
        G=sqrt(mTx/ro)*pinv(H);
        for j=1:mTx %i loop
            for J=1:mTx
                n(J)=(norm(G(J,:)))^2;
            end
            for t=1:j-1
                n(k(t))= Inf;
            end
            [ Y,I]=min(n);
            k(j)=I;
            w=G(I,:);
            yy=w*r;
            [ o,n1]=quantiz(real(yy),partition,xcodebook);
            [ o,n2]=quantiz(imag(yy),partition,ycodebook);
            b(I)=n1+i*n2;
            r=r-sqrt(ro/mTx)*H(:,I)*b(I);
            H(:,I)=0;
          G=sqrt(mTx/ro)*pinv(H);
        end % end i loop
        err_real= sum (real(b)~=real(S_in.'));
        err_imag= sum (imag(b)~=imag(S_in.'));
        errZF_DFE=errZF_DFE+err_real+err_imag;
  end
% End ZF-DFE 
  BER(bi)=errZF/(L*N*log2(Mary));
  BER_DFE(bi)=errZF_DFE/(L*N*log2(Mary));
end
 
semilogy(snr,BER,'-ob');
hold on;
semilogy(snr,BER_DFE,'-*m');
xlabel('SNR(dB)');
ylabel('Bit Error Rate');
legend('ZF','ZF-DFE');
title('Uncode for MIMO system Equipped with ZF/ZF-DFE receivers');
grid on;
toc

文件列表(点击上边下载按钮,如果是垃圾文件请在下面评价差评或者投诉):

MIMO系统中ZF破零均衡仿真源码程序/
MIMO系统中ZF破零均衡仿真源码程序/ZF_DFE.m

关键词: 源码 程序 系统

Top_arrow
回到顶部
联系方式| 版权声明| 招聘信息| 广告服务| 银行汇款| 法律顾问| 兼职技术| 付款方式| 关于我们|
网站客服网站客服 程序员兼职招聘 程序员兼职招聘
沪ICP备19040327号-3
公安备案号:沪公网安备 31011802003874号
库纳格流体控制系统(上海)有限公司 版权所有
Copyright © 1999-2014, GUSUCODE.COM, All Rights Reserved