1.问题描述:

 ZF和MMSE准则线性预编码的比较

2.部分程序:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%                   ZF和MMSE准则线性预编码的比较
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
clear all;
close all;
warning off;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%                   system parameter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Nt = 4; % the Tx antenna number
Nr = 4; % the Rx antenna number
num = 100; % 帧内信道保持不变,帧的符号数
M = 4;% QPSK modulation
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%                   simulation parameter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Iter_num = 10; % iteration in some snr
SNR = [0:2:10];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%                         init
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Len = length(SNR);
ber_mmse = zeros(1,Len);
ber_zf = zeros(1,Len);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%                         main process
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for index = 1:Len;%不同信噪比的循环
    
    snr = 10.^(SNR(index)/10);
    ea = 1;% 每个天线发射的功率,也即信号向量中每个元素的功率
    es = ea*Nt; % 总共的发射功率
    sigma_n2 = es/snr;% noise power
    
    for cnt = 1:Iter_num;% 信道的实现次数的循环
        
        H = sqrt(1/2)*(randn(Nr,Nt)+j*randn(Nr,Nt));% H
        MMSE_F = H'*inv(H*H'+sigma_n2/ea*eye(Nt));% H的MMSE估计
        ZF_F = H'*inv(H*H');% H的ZF估计
        beta_mmse = sqrt(es/norm(MMSE_F,'fro').^2);
        beta_zf = sqrt(es/norm(ZF_F,'fro').^2);
        F_MMSE = beta_mmse*MMSE_F; % MMSE 的预编码矩阵
        F_ZF = beta_zf*ZF_F;% % ZF的预编码矩阵
        
        for sym_index = 1:num; %在一帧数据符号中,信道保持不变
            
            Source = randint(Nt,1,M);% random data generator
            Sym = pskmod(Source,M,pi/4,'gray'); % qpsk modulator
            Sym_mmse = F_MMSE*Sym;% 对符号进行MMSE预编码
            Sym_zf = F_ZF*Sym;% 对符号进行ZF预编码
            noise = sqrt(sigma_n2/2)*(randn(Nr,2)+j*randn(Nr,2));%生成噪声功率为sigma_n2
            y_mmse = H*Sym_mmse + noise(:,1);% 通过信道并加噪声
            y_zf = H*Sym_zf + noise(:,2);% 通过信道并加噪声
            r_mmse = 1/beta_mmse*y_mmse;% 进行接收端的缩放
            r_zf = 1/beta_zf*y_zf;% 进行接收端的缩放
            Rec_Data_mmse = pskdemod(r_mmse,M,pi/4,'gray');% 对接收信号进行判决
            Rec_Data_zf = pskdemod(r_zf,M,pi/4,'gray');% 对接收信号进行判决
            
            [err ratio] = biterr(Rec_Data_mmse,Source,log2(M));% ber
            ber_mmse(1,index) = ber_mmse(1,index) + ratio;
            [err ratio] = biterr(Rec_Data_zf,Source,log2(M));%ber
            ber_zf(1,index) = ber_zf(1,index) + ratio;
        end; % loop for num
        
    end; % loop for iteration
    
end % loop for snr
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%                          plot
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ber_mmse = ber_mmse/Iter_num/num;
ber_zf = ber_zf/Iter_num/num;

figure(1);
semilogy(SNR,ber_mmse,'LineWidth',2,'Color',[0 0 0],'Marker','s');
hold on;
semilogy(SNR,ber_zf,'LineWidth',2,'Color',[0 0 0],'Marker','*');
grid on
xlabel('SNR(dB)');ylabel('BER');
legend('MMSE pre-coding','ZF pre-coding');

3.仿真结论:

D00002

ZF和MMSE准则线性预编码的比较相关推荐

  1. 预编码ZF,MMSE,THP准则线性预编码误码率仿真

    目录 1.算法概述 2.仿真效果预览 3.核心MATLAB代码预览 4.完整MATLAB程序 1.算法概述 恒定包络( Constant Enve-lope,CE) 预编码: 该算法规定,每根天线上的 ...

  2. 基于matlab的ZF,MMSE,THP线性预编码误码率仿真

    目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 该算法规定,每根天线上的发射功率被限定为一个与信道条件和信号符号均无关的常数,各根天线均发射恒包络信号,符号信息由其相位携带, ...

  3. 混合波束成形| 论文:基于MMSE准则的混合波束成形算法

    文章目录 前言 背景简介 问题建模 波束成形设计: 数字波束成形 波束成形设计: 模拟波束成形 流形优化 GEVD算法 波束成形设计: 接收端 拓展到宽带系统 仿真性能 窄带情形 宽带情形 总结 相关 ...

  4. m基于matlab的光通信的信道估计,均衡,抑制papr误码率仿真,对比ZF,RLS,MMSE三种算法

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 可见光通信的信道估计,均衡,抑制papr. 不考虑光信道,用传统的无线通信的OFDM的信道估计,均衡 ...

  5. m瑞利信道下对比ZF-SIC,MMSE-SIC,MRC三种均衡算法的误码率matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 移动通信系统的性能在很大程度上决定于无线信道的特性.单发单收系统无线信道的特性已经研究得很透彻,针对 ...

  6. 大规模MIMO下行链路预编码(1)

    本文主要内容包含:大规模MIMO下行链路预编码概述.定义.目的.分类.实现.基本原理,以及常见的线性预编码算法简介,通过阅读本文,可以对大规模MIMO下行预编码相关知识有全面的了解. 文章目录 大规模 ...

  7. 传输预编码matlab,基于MATLAB的MIMO系统预编码性能仿真教程.doc

    基于MATLAB的MIMO系统预编码性能仿真教程 PAGE \* MERGEFORMAT - 33 - 摘要在现今的移动通信系统中,被极多的国际通信标准采纳为基础性关键技术的一种方法是多输入多输出的技 ...

  8. 传输预编码matlab,基于MATLAB的MIMO系统预编码性能仿真.doc

    基于MATLAB的MIMO系统预编码性能仿真.doc (33页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分  摘要在现今的移动通信系统 ...

  9. 多用户MIMO系统预编码:广义矩阵求逆法

    前言 行将毕业了,最近不太看那些智能反射面.通感一体化之类的热点了.有限的时间里,准备多读一些过去的经典沉淀一下. 疫情汹涌,祝大家一切都好.接下来在家的日子里,希望要求自己每天写一篇经典论文的摘记博 ...

  10. mulitpartfile怎么接收不到值_最小均方误差接收机(MMSE接收机)

    操作符: 为矩阵或向量的转置, 矩阵或向量的共轭, 矩阵或向量的共轭转置 无线通信多用户模型中,接收器会收到来自多个发送端得信号.假设发送器采用单天线发送,接收器有N个接收天线,接收器收到得信号模型可 ...

最新文章

  1. crashpad 应用程序异常解决方案
  2. 练习:自己写一个容器ArrayList集合 一一数组综合练习2
  3. linux怎么让某一个组对一文件可读可写,设置linux文件权限,使得同一用户组的可以对一个文件自由修改...
  4. 更改Sharepoint管理中心端口号
  5. java上传csv文件上传_java处理csv文件上传示例详解
  6. 解决Dataframe删除操作时警告:SettingWithCopyWarning:A value is trying to be set on a copy of a slice from a...
  7. ubuntu 14.04下练习lua
  8. 谷歌更新漏洞披露规则:不管补丁打没打,够90天才披露
  9. SQL Server高级查询之数据查询和操作(DDL和DML)
  10. Centos6.x 64位 安装JDK
  11. centos7.0 安装docker
  12. 数字图像处理报告:实验4 图像复原
  13. Bluefish Linux下的web编辑神器-Hello,World
  14. 音视频技术之《移动直播秒开优化经验》
  15. java 判断手机访问_下面java代码判断是手机访问还是PC访问什么地方出错了,手机跳转不到制定页面,等待解答...
  16. 怎样找回html里收藏的文件夹,电脑浏览器收藏的网址重装后如何找回
  17. 灰度共生矩阵原理+Matlab中实现
  18. Linux更改文件权限(一)
  19. Vue3答题问卷H5实战
  20. utf-8 python 乱码prinnt u_python处理一些乱码的中文文本时decode('utf-8')报错的处理

热门文章

  1. 在linux启动docker时,报告XIO: fatal IO error 错误
  2. AC自动机 洛谷P3966 单词
  3. 洛谷P2680 运输计划
  4. 计算机权限全部用户,允许所有人权限应用于匿名用户 (Windows 10) - Windows security | Microsoft Docs...
  5. 解决“不是有效的win32应用程序”
  6. Hive 函数之 Rank 函数案例
  7. MySQL year函数
  8. linux aptana,如何设置内部浏览器的Aptana在Linux上
  9. Excel图表制作(一):商务图表之加最大值和最小值标签的基本图
  10. Pytorch并行计算(一): DataParallel