基于MRC,ZF,MMSE,ZF-SIC,MMSE-SIC算法实现MIMO接收性能检测,绘制误比特率~接收天线数曲线

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信       无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机 

⛄ 内容介绍

在无线通信系统中,接收性能的优化是一个重要的研究领域。Vblast(垂直布置的多天线)是一种多天线技术,通过在发送端和接收端使用多个天线来提高系统的性能。然而,为了实现Vblast系统,我们需要一些先进的算法来处理多天线之间的干扰。

本文将介绍基于最大比合并(MRC)、零离子(ZF)、最小均方误差(MMSE)、零离子-干扰消除(ZF-SIC)和最小均方误差-干扰消除(MMSE-SIC)算法的Vblast接收性能检测。我们将使用这些算法来绘制误比特率-接收天线数曲线,以评估它们在不同接收天线数下的性能。

首先,我们将简要介绍这些算法的原理。MRC算法通过将来自不同天线的信号进行合并,选择最强的信号来进行解调。这样可以有效地提高信号的质量。ZF算法通过将接收到的信号与信道矩阵的逆矩阵相乘,消除了多天线之间的干扰。MMSE算法则通过最小化均方误差来优化接收信号的质量。

接下来,我们将介绍ZF-SIC和MMSE-SIC算法。这些算法在ZF和MMSE的基础上,进一步消除了多天线之间的干扰。ZF-SIC算法首先使用ZF算法进行解调,然后对解调后的信号进行干扰消除。类似地,MMSE-SIC算法首先使用MMSE算法进行解调,然后对解调后的信号进行干扰消除。这样,我们可以进一步提高接收性能。

为了评估这些算法的性能,我们将绘制误比特率-接收天线数曲线。误比特率是衡量接收信号质量的指标,它表示在接收到的信号中每个比特错误的概率。我们将在不同的接收天线数下,使用MRC、ZF、MMSE、ZF-SIC和MMSE-SIC算法进行接收,并记录误比特率。然后,我们将这些数据绘制成曲线,以比较不同算法在不同接收天线数下的性能。

通过绘制误比特率-接收天线数曲线,我们可以看到不同算法的性能差异。在接收天线数较少的情况下,MRC算法可能表现较好。随着接收天线数的增加,ZF算法的性能可能逐渐超过MRC算法。而MMSE算法则可能在更高的接收天线数下表现更好。ZF-SIC和MMSE-SIC算法可以进一步提高性能,尤其是在较高的接收天线数下。

综上所述,基于MRC、ZF、MMSE、ZF-SIC和MMSE-SIC算法的Vblast接收性能检测可以帮助我们评估不同算法在多天线系统中的性能。通过绘制误比特率-接收天线数曲线,我们可以比较不同算法在不同接收天线数下的性能差异。这些算法可以为无线通信系统的优化提供有价值的参考。

⛄ 部分代码

% 仿真五种(MRC,ZF,MMSE,ZF-SIC,MMSE-SIC) Vblast接收的检测性能,绘制误比特率~接收天线数曲线。 % 发端初始化=============================================================== % 发射天线数tx,接收天线数rx,发射矩阵长度L(帧长) clear all;clc;tx=10;rx_number=[20:20:200];L=10000; Modulation='QPSK';EbN0=5;B=30000;Ts=1/24300; SNR=EbN0-10*log10(Ts*B);% SNR=5;% 信源A A=randi([0,3],tx*L,1); % 经过QPSK调制的V-Blast发射矩阵X X1=reshape(A,tx,L);X=zeros(tx,L); for k=1:L    X(:,k)=pskmod(X1(:,k),4);end % 检测% MRC======================================================================disp('MRC');berm=[];for rx=rx_number    rx    % 快衰落Rayleigh信道H     H=sqrt(1/2)*(randn(rx,tx,L)+i*randn(rx,tx,L));     % 均值为0方差为1的高斯白噪声n     n=sqrt(1/2)*(randn(rx,L)+i*randn(rx,L));    % 未叠加噪声的接收信号R     R=zeros(rx,L);     for k=1:L       R(:,k)=sqrt(1/tx)*H(:,:,k)*X(:,k);     end        snr=10^(SNR/10);    R_noised=R+sqrt(1/snr)*n;    x=[];        % 逐时隙对接收符号矢量进行检测,合并得到一帧发射矩阵X的估计x     for t=1:L        r=R_noised(:,t);        HH=H(:,:,t);        G=HH';        y=G*r;        xtemp=zeros(tx,1);        for k=1:tx            if imag(y(k))<real(y(k)) && imag(y(k))>-real(y(k))                xtemp(k)=1;            elseif imag(y(k))>real(y(k)) && imag(y(k))>-real(y(k))                xtemp(k)=i;            elseif imag(y(k))>real(y(k)) && imag(y(k))<-real(y(k))                xtemp(k)=-1;            elseif imag(y(k))<real(y(k)) && imag(y(k))<-real(y(k))                xtemp(k)=-i;            end        end        x=[x,xtemp];    end    % 从x求A的估计a     x1=zeros(tx,L);    for k=1:L        x1(:,k)=pskdemod(x(:,k),4);    end    a=reshape(x1,tx*L,1);    % 比较A和a计算错值率temp_ber    [errbit,temp_ber]=biterr(A,a,2);     berm=[berm,temp_ber];endfiguresemilogy(rx_number,berm,'*- g');hold on% ZF=======================================================================disp('ZF');berz=[];for rx=rx_number    rx    % 快衰落Rayleigh信道H     H=sqrt(1/2)*(randn(rx,tx,L)+i*randn(rx,tx,L));     % 均值为0方差为1的高斯白噪声n     n=sqrt(1/2)*(randn(rx,L)+i*randn(rx,L));    % 未叠加噪声的接收信号R     R=zeros(rx,L);     for k=1:L       R(:,k)=sqrt(1/tx)*H(:,:,k)*X(:,k);     end        snr=10^(SNR/10);    R_noised=R+sqrt(1/snr)*n;    x=[];        % 逐时隙对接收符号矢量进行检测,合并得到一帧发射矩阵X的估计x     for t=1:L        r=R_noised(:,t);        HH=H(:,:,t);        G=pinv(HH);        y=G*r;        xtemp=zeros(tx,1);        for k=1:tx            if imag(y(k))<real(y(k)) && imag(y(k))>-real(y(k))                xtemp(k)=1;            elseif imag(y(k))>real(y(k)) && imag(y(k))>-real(y(k))                xtemp(k)=i;            elseif imag(y(k))>real(y(k)) && imag(y(k))<-real(y(k))                xtemp(k)=-1;            elseif imag(y(k))<real(y(k)) && imag(y(k))<-real(y(k))                xtemp(k)=-i;            end        end        x=[x,xtemp];    end    % 从x求A的估计a     x1=zeros(tx,L);    for k=1:L        x1(:,k)=pskdemod(x(:,k),4);    end    a=reshape(x1,tx*L,1);    % 比较A和a计算错值率temp_ber    [errbit,temp_ber]=biterr(A,a,2);     berz=[berz,temp_ber];endsemilogy(rx_number,berz,'o- b');% MMSE=====================================================================disp('MMSE');bermm=[];for rx=rx_number    rx    % 快衰落Rayleigh信道H     H=sqrt(1/2)*(randn(rx,tx,L)+i*randn(rx,tx,L));     % 均值为0方差为1的高斯白噪声n     n=sqrt(1/2)*(randn(rx,L)+i*randn(rx,L));    % 未叠加噪声的接收信号R     R=zeros(rx,L);     for k=1:L       R(:,k)=sqrt(1/tx)*H(:,:,k)*X(:,k);     end        snr=10^(SNR/10);    R_noised=R+sqrt(1/snr)*n;    x=[];        % 逐时隙对接收符号矢量进行检测,合并得到一帧发射矩阵X的估计x     for t=1:L        r=R_noised(:,t);        HH=H(:,:,t);        G=inv(HH'*HH+(1/snr)*eye(tx))*HH';        y=G*r;        xtemp=zeros(tx,1);        for k=1:tx            if imag(y(k))<real(y(k)) && imag(y(k))>-real(y(k))                xtemp(k)=1;            elseif imag(y(k))>real(y(k)) && imag(y(k))>-real(y(k))                xtemp(k)=i;            elseif imag(y(k))>real(y(k)) && imag(y(k))<-real(y(k))                xtemp(k)=-1;            elseif imag(y(k))<real(y(k)) && imag(y(k))<-real(y(k))                xtemp(k)=-i;            end        end        x=[x,xtemp];    end    % 从x求A的估计a     x1=zeros(tx,L);    for k=1:L        x1(:,k)=pskdemod(x(:,k),4);    end    a=reshape(x1,tx*L,1);    % 比较A和a计算错值率temp_ber    [errbit,temp_ber]=biterr(A,a,2);     bermm=[bermm,temp_ber];endsemilogy(rx_number,bermm,'o- r');% ZF-SIC===================================================================disp('ZF-SIC');berzs=[];for rx=rx_number    rx    % 快衰落Rayleigh信道H    H=sqrt(1/2)*(randn(rx,tx,L)+i*randn(rx,tx,L));    % 均值为0方差为1的高斯白噪声n    n=sqrt(1/2)*(randn(rx,L)+i*randn(rx,L));    % 未叠加噪声的接收信号R    R=zeros(rx,L);    for k=1:L        R(:,k)=sqrt(1/tx)*H(:,:,k)*X(:,k);    end        snr=10^(SNR/10);    R_noised=R+sqrt(1/snr)*n;    x=[];        for t=1:L        r=R_noised(:,t);        HH=H(:,:,t);        G=pinv(HH);        S=[1:tx];        xtemp=zeros(tx,1);        for k=1:tx            [wki,ki]=minnorm(G);            y=wki*r;            if imag(y)<real(y) && imag(y)>-real(y)                xtemp(S(ki))=1;            elseif imag(y)>real(y) && imag(y)>-real(y)                xtemp(S(ki))=i;            elseif imag(y)>real(y) && imag(y)<-real(y)                xtemp(S(ki))=-1;            elseif imag(y)<real(y) && imag(y)<-real(y)                xtemp(S(ki))=-i;            end            r=r-sqrt(1/tx)*xtemp(S(ki))*H(:,S(ki),t);            HH(:,ki)=[];            S(ki)=[];            G=pinv(HH);        end        x=[x,xtemp];    end    % 从x求A的估计a     x1=zeros(tx,L);    for k=1:L        x1(:,k)=pskdemod(x(:,k),4);    end    a=reshape(x1,tx*L,1);    % 比较A和a计算错值率temp_ber     [errbit,temp_ber]=biterr(A,a,2);     berzs=[berzs,temp_ber];endsemilogy(rx_number,berzs,'s- b');% MMSE-SIC=================================================================disp('MMSE-SIC')bermms=[];for rx=rx_number    rx    % 快衰落Rayleigh信道H    H=sqrt(1/2)*(randn(rx,tx,L)+i*randn(rx,tx,L));    % 均值为0方差为1的高斯白噪声n    n=sqrt(1/2)*(randn(rx,L)+i*randn(rx,L));    % 未叠加噪声的接收信号R    R=zeros(rx,L);    for k=1:L        R(:,k)=sqrt(1/tx)*H(:,:,k)*X(:,k);    end        snr=10^(SNR/10);    R_noised=R+sqrt(1/snr)*n;    x=[];        for t=1:L        r=R_noised(:,t);        HH=H(:,:,t);%         G=pinv(HH);        G=inv(HH'*HH+(1/snr)*eye(tx))*HH';        S=[1:tx];        xtemp=zeros(tx,1);        for k=1:tx            [wki,ki]=minnorm(G);%             w=inv(HH'*HH+(1/snr)*eye(tx-k+1))*HH';%             y=w(ki,:)*r;            y=wki*r;            if imag(y)<real(y) && imag(y)>-real(y)                xtemp(S(ki))=1;            elseif imag(y)>real(y) && imag(y)>-real(y)                xtemp(S(ki))=i;            elseif imag(y)>real(y) && imag(y)<-real(y)                xtemp(S(ki))=-1;            elseif imag(y)<real(y) && imag(y)<-real(y)                xtemp(S(ki))=-i;            end            r=r-sqrt(1/tx)*xtemp(S(ki))*H(:,S(ki),t);            HH(:,ki)=[];            S(ki)=[];%             G=pinv(HH);            G=inv(HH'*HH+(1/snr)*eye(tx-k))*HH';        end        x=[x,xtemp];    end    % 从x求A的估计a     x1=zeros(tx,L);    for k=1:L        x1(:,k)=pskdemod(x(:,k),4);    end    a=reshape(x1,tx*L,1);    % 比较A和a计算错值率temp_ber     [errbit,temp_ber]=biterr(A,a,2);     bermms=[bermms,temp_ber];   endsemilogy(rx_number,bermms,'s- r');grid onlegend('MRC','ZF','MMSE','ZF-SIC','MMSE-SIC'); xlabel('接收天线数'); ylabel('误比特率(BER)'); title('blast检测比较')

⛄ 运行结果

⛄ 参考文献

[1]杨敬畏.大规模MIMO系统的检测算法研究[D].杭州电子科技大学[2023-08-14].

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料

🍅 仿真咨询

1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化
2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
2.图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
3 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化
4 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配
5 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化
6 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化
7 电力系统方面
微电网优化、无功优化、配电网重构、储能配置
8 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长
9 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值