您现在的位置:首页 >> 通信 >> 内容

基于MATLAB的MIMO系统ZF破零均衡仿真

时间:2022/12/28 17:13:21 点击:

  核心提示:A160包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y5uUk5xq

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览


3.算法概述

        在无线通信中。 无线信道由各种类型的损伤组成,例如延迟扩展、衰落和多普勒扩展等。信道中的多径传播引入延迟扩展,导致 ISI、ICI等等问题,在信号接收端,我们需要进行均衡以减少失真,减轻 ISI 和噪声的综合影响。 因此为了恢复原始信号,使用滤波器,常用基本的滤波器有破零(Zero Forcing,ZF) 和最小均方误差( Minimum Mean Square Error,MMSE)算法。ZF算法使用一个加权矩阵W消除信道的干扰,根据估计的信道响应H初始化矩阵W,其中x表示发送的信号,,h表示信道冲击响应,H是估计的信道冲击响应,z表示恢复的信号。

        MIMO桌接收的时候,把这三种算法比作把一个信号映射到某个平面上的问题,MRC(Maximal Ratio Combining,最大比合并)是偏心信号,ZF(Zero Foring,迫零)是偏心干扰消除(即最小化干扰,使得干扰接近0),MMSE(Minimum Mean Squared Error,最小均方误差)是将两者折中。

4.部分源码

..............................................

  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

       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;

...................................................

A160

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168