svd,BD,ZF,SLNR,MMSE线性预编码性能对比MATLAB仿真

简介: svd,BD,ZF,SLNR,MMSE线性预编码性能对比MATLAB仿真

1.算法仿真效果
matlab2022a仿真结果如下:

bc4d3c489ae7a6fc09075279790e3dbd_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
8675b29e68eb2e729c8d7b3c7978aa89_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
38855475c456824fcfd0b1e720dc73c3_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
12f7f701fb23be258c6c577b9719be71_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要

    线性预测编码(LPC)是主要用于音频信号处理与语音处理中根据线性预测模型的信息用压缩形式表示数字语音信号谱包络(en:spectral envelope)的工具。它是最有效的语音分析技术之一,也是低位速下编码方法高质量语音最有用的方法之一,它能够提供非常精确的语音参数预测。

   线性预测编码经常用来传输频谱包络信息,这样它就可以容忍传输误差。由于直接传输滤波器系数(参见线性预测中系数定义)对于误差非常敏感,所以人们不希望直接传输滤波器系数。换句话说,一个小的误差不会扭曲整个频谱或使整个频谱质量下降,但是一个小的误差可能使预测滤波器变得不稳定。有许多更加高级的表示方法,如对数面积比(en:log area ratio,LAR)、线谱对(en:line spectral pairs,LSP) 分解以及反射系数等。在这些方法中,LSP 由于它能够保证预测器的稳定性、并且小的系数偏差带来的谱误差也是局部的这些特性,所以得到了广泛应用。

2.1svd线性预编码

   单用户 SVD 预编码技术是一种点对点的 MIMO 系统,需要对发送端和接收端进行联合处理。 单用户 SVD 预编码技术利用了单用户 MIMO 信道的所有通道来传送信息,需要在发送端需要进行预编码,同时在接收端也要进行赋形处理。信道矩阵H的 SVD 分解为:

1d7daa0b3244a7f6e5f06c6d9061cc47_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

   其中 U 和 V 都是正交矩阵且Σ=diag(a1,a2,...)为对角矩阵。令发射信号x=Va,即发送预处理矩阵使用信道矩阵HSVD 分解后的右奇异矩阵V ,则处理机则用矩阵U来进行接收赋形,得:

826b27e258766d7c16312aaea5062c0c_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.2BD线性预编码

    块对角化预编码是在多用户MIMO系统下行链路中受到广泛认可的一种线性预编码,它将多用户MIMO系统的下行信道矩阵分解为块对角化形式,等效为多个互不干扰的单用户MIMO系统,完全消除了用户间干扰,通过合理的功率分配,能获得比迫零线性预编码更高的系统容量。块对角化预编码是对 ZF 预编码算法的改进,它在线性预编码矩阵前乘入了零空间矩阵,可以有效减小其他用户产生的干扰。.

d8b37c10622574244c9af76b640930c7_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.3ZF线性预编码

   ZF预编码可以理解为把user自身因为多天线空间信道传输而产生的在同时同频的自干扰消掉(但没有考虑消去高斯分布的noise),从而最小化了真实信号和估计的误差平方和,而从统计来看就是Maximize likelihood这个模型

3.MATLAB核心程序

            [W1,M1]=svdprecoding(H,K,S,P);
            [U,D,V]=svd(H);
            p1 = ones(1,K*S);
            % p1 = waterfilling(D,SNR,Nt,K,S);
           [count_temp] = receiver(H,Nt,S,K,Tc,P,n,W1,M1,s,q);
            count1=count1+count_temp;
            G=M1*H*W1;
            capacity1=capacity1+log2(det(eye(K*S,K*S)+P/(sigma2*Nt)*G*G'));       
  % BD
            [W2,D2 M2] = BD2(Nt,Nri,S,K,H,P);
            p2 = ones(1,K*S);
            [count_temp] = receiver(H,Nt,S,K,Tc,P,n,W2,M2,s,q);
            count2=count2+count_temp;
            capacity2=capacity2+sumrate(H,W2,M2,K,S,Nri,Nt,sigma2,P);        
  %ZF
           [W3]=ZF(H,P,K,S);
           [count_temp] = receiver(H,Nt,S,K,Tc,P,n,W3,eye(K*Nri),s,q);
            count3=count3+count_temp;
            capacity3=capacity3+sumrate(H,W3,eye(K*Nri),K,S,Nri,Nt,sigma2,P);          
%SLNR
       %[W5]  = SLNR(Nt,Nri,S,K,H,sigma2,P);
        [W5]=SLNR2(H,sigma2,P,K,Nri,S,Nt);
        [count_temp] = receiver(H,Nt,S,K,Tc,P,n,W5,eye(K*Nri),s,q);
            count5=count5+count_temp;
     
       capacity5=capacity5+sumrate(H,W5,eye(K*Nri),K,S,Nri,Nt,sigma2,P);
%MMSE
        [W6,M6]=MMSE(H,sigma2,P,K,Nri,S,Nt);
        [count_temp] = receiver(H,Nt,S,K,Tc,P,n,W6,M6,s,q);
            count6=count6+count_temp;
        
       capacity6=capacity6+sumrate(H,W6,M6,K,S,Nri,Nt,sigma2,P);
相关文章
|
30天前
|
算法 机器人 定位技术
基于机器视觉和Dijkstra算法的平面建筑群地图路线规划matlab仿真
本程序基于机器视觉与Dijkstra算法,实现平面建筑群地图的路径规划。通过MATLAB 2022A读取地图图像,识别障碍物并进行路径搜索,支持鼠标选择起点与终点,最终显示最优路径及长度,适用于智能导航与机器人路径规划场景。
|
28天前
|
传感器 并行计算 算法
【无人机编队】基于非支配排序遗传算法II NSGA-II高效可行的无人机离线集群仿真研究(Matlab代码实现)
【无人机编队】基于非支配排序遗传算法II NSGA-II高效可行的无人机离线集群仿真研究(Matlab代码实现)
117 3
|
28天前
|
存储 并行计算 算法
【图像压缩】在 MATLAB 中使用奇异值分解 (SVD) 进行图像压缩(Matlab代码实现)
【图像压缩】在 MATLAB 中使用奇异值分解 (SVD) 进行图像压缩(Matlab代码实现)
163 3
|
30天前
|
传感器 算法 数据格式
【UAV】改进的多旋翼无人机动态模拟的模块化仿真环境(Matlab、Simulink实现)
【UAV】改进的多旋翼无人机动态模拟的模块化仿真环境(Matlab、Simulink实现)
110 0
|
28天前
|
机器学习/深度学习 算法 新能源
【优化调度】基于matlab粒子群算法求解水火电经济调度优化问题研究(Matlab代码实现)
【优化调度】基于matlab粒子群算法求解水火电经济调度优化问题研究(Matlab代码实现)
|
28天前
|
机器学习/深度学习 存储 并行计算
【无人机】基于MPC的无人机路径规划研究(Matlab代码实现)
【无人机】基于MPC的无人机路径规划研究(Matlab代码实现)
154 6
|
28天前
|
机器学习/深度学习 边缘计算 人工智能
【无人机】采用NOMA的节能多无人机多接入边缘计算(Matlab代码实现)
【无人机】采用NOMA的节能多无人机多接入边缘计算(Matlab代码实现)
|
28天前
|
机器学习/深度学习 传感器 运维
【电机轴承监测】基于matlab声神经网络电机轴承监测研究(Matlab代码实现)
【电机轴承监测】基于matlab声神经网络电机轴承监测研究(Matlab代码实现)
|
28天前
|
数据采集 算法 调度
【电力系统】基于matlab虚拟电厂内部负荷调度优化模型(matlab+yalmip+cplex)(Matlab代码实现)
【电力系统】基于matlab虚拟电厂内部负荷调度优化模型(matlab+yalmip+cplex)(Matlab代码实现)
|
29天前
|
算法 Java 计算机视觉
【图像去模糊】非盲去模糊实景图像处理,使用点扩散函数(PSF)快速去除实景图像中的模糊(Matlab代码实现)
【图像去模糊】非盲去模糊实景图像处理,使用点扩散函数(PSF)快速去除实景图像中的模糊(Matlab代码实现)
132 2

热门文章

最新文章