%mimo下行的线性预编码,分别基于ZF准则和MMSE准则,分别对基于zf准则的线性预编码和基于mmse准则的线性预编码进行比较。最后得到结论。%
%基于ZF准则和MMSE准则的预编码性能比较
function zf_mmse()
clear all
close all
format long; %将数据显示为长整型科学计数
Nt=4;%天线个数
Nr=4;
SNR=[0:2:20];%设置不同信噪比
channel_n=100*ones(1,length(SNR));
error_mmselinp=zeros(1,length(SNR));%初始化误码率
error_zflinp=zeros(1,length(SNR));
for loop_ebno=1:length(SNR)%不同信噪比的循环
snr=10.^(SNR(loop_ebno)/10);%将信噪比从分贝形式转化成比例表示
ea=1;%每个天线发射的功率,也即信号向量中每个元素的功率
es=ea*Nt;%总共的发射功率
sigma_n2=es/snr;%噪声功率
num=200;%发送数据个数
tic,
for loop_channel=1:channel_n(loop_ebno)%信道的实现次数的循环
H=sqrt(1/2)*(randn(Nr,Nt)+j*randn(Nr,Nt));%信道增益矩阵
mmse_F=H'*inv(H*H'+sigma_n2/ea*eye(Nt));
zf_F=H'*inv(H*H'); %求出F^,文献MIMO信道预编码技术研究 重要文献p27
beta_mmse=sqrt(es/norm(mmse_F,'fro').^2);
beta_zf=sqrt(es/norm(zf_F,'fro').^2);%计算zf_F的Frobenius范数%%求出缩放因子beta
F_mmse=beta_mmse*mmse_F;
F_zf=beta_zf*zf_F;%求出预编码矩阵F=F^×beta
for loop_num=1:num%在一帧数据符号中,信道保持不变。一帧总共有num个数据发送
gen_u=(sign(randn(Nt,1))+j*sign(randn(Nt,1)));%产生信号
u=sqrt(1/2)*gen_u;%归一化信号功率
x_mmse=F_mmse*u;
x_zf=F_zf*u;%发送信号
noise=sqrt(sigma_n2/2)*(randn(Nr,1)+j*randn(Nr,1));%生成噪声功率为sigma_n2的噪声
noise1=sqrt(sigma_n2/2)*(randn(Nr,1)+j*randn(Nr,1));
y_mmse=H*x_mmse+noise;
y_zf=H*x_zf+noise1;
r_mmse=1/beta_mmse*y_mmse;
r_zf=1/beta_zf*y_zf;%接收信号
rev_data_mmse=sign(real(r_mmse))+j*sign(imag(r_mmse));%对接收信号进行判决
rev_data_zf=sign(real(r_zf))+j*sign(imag(r_zf));
error_mmselinp(1,loop_ebno)=error_mmselinp(1,loop_ebno)+sum(((abs(rev_data_mmse-gen_u)).^2)/4);%计算误比特数
error_zflinp(1,loop_ebno)=error_zflinp(1,loop_ebno)+sum(((abs(rev_data_zf-gen_u)).^2)/4);
end
end
toc
ber_mmselinp(1,loop_ebno)=error_mmselinp(1,loop_ebno)/(num*Nt*2*channel_n(loop_ebno));%注意每一个信噪比产生的数据数=channel_n(loop_ebno)*num*Nt*2,
%乘以2是因为,产生的数据符号式复数,相当于进行了4QAM调制
ber_zflinp(1,loop_ebno)=error_zflinp(1,loop_ebno)/(num*Nt*2*channel_n(loop_ebno));
end
%画出不同准则下误码率和信噪比的曲线
P1=semilogy(SNR,ber_mmselinp,'o-r');
hold on
P2=semilogy(SNR,ber_zflinp,'*-k');
set(P1,'Linewidth',[2]);%P1线宽2号
set(P2,'Linewidth',[2]);%P2线宽2号
grid on;
xlabel('symbol SNR(dB)');ylabel('BER');
title('基于ZF准则和MMSE准则的预编码性能比较')
leg1='mmselinear';%设置图例
leg2='zflinear';
legend(leg1,leg2);
没有合适的资源?快使用搜索试试~ 我知道了~
基于MATLAB实现的mimo下行的线性预编码+使用说明文档
共2个文件
md:1个
m:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 38 浏览量
2024-05-22
17:17:04
上传
评论
收藏 6KB RAR 举报
温馨提示
CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的mimo下行的线性预编码,分别基于ZF准则和MMSE准则,分别对基于zf准则的线性预编码和mmse准则的线性预编码进行比较+使用说明文档 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于MATLAB实现的mimo下行的线性预编码,分别基于ZF准则和MMSE准则,分别对基于zf准则的线性预编码和基于mmse准则的线性预编码进行比较+使用说明文档.rar (2个子文件)
zf_mmse.m 3KB
使用说明文档.md 13KB
共 2 条
- 1
资源评论
IT狂飙
- 粉丝: 4821
- 资源: 2654
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- share_1110057719.png
- 【完整源码+数据库】 SpringBoot集成Spring Security登录管理 添加 session 共享
- 用Unity实现简单的撤销/重做(undo/redo)功能
- SpringBoot整合ActiveMQ完整源码分享给需要的同学
- 梦幻西游道人20241105j
- 采用JavaFx编写的加解密工具完整源码
- ventoy,linux环境,安装系统必备软件
- 基于javaFx+swing实现的截图工具完整源码!完美运行(完整的项目,包含源码和素材)
- 基于 Javascript 实现的图像裁剪,图像缩放(最邻近插值,双线性差值,三次卷积插值),图像滤镜(灰度,模糊,锐化,卡通)
- 基于java的高校固定资产管理系统【程序员VIP专用】.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功