clear all;
close all;
SNR_dB=0:2:20;
K=4; %发射天线数量
L=4; %接收天线数量
Es=1; %把信号能量设置为1
len_SNR=length(SNR_dB);
N0_dB=10*log10(K*Es)-SNR_dB; %信噪比用对数形式表示时,SNR_dB=S_dB-N_dB,注意这里的信号功率要乘以K,因为有K路发射信号
N0=10.^(N0_dB/10); %实际噪声功率
count=zeros(1,len_SNR); %错误接受码元计数
BER=zeros(1,len_SNR); %误码率
N_block=5000; %信道最大块数
N_sym0=100; %每根天线处理的QPSK符号数
N_err=2000; %最小错误码元数
n_init=1; %信噪比指针
while (n_init<=len_SNR)&&(count(len_SNR)<N_block)
H=sqrt(0.5)*(randn(L,K)+1i*randn(L,K)); %产生L、K路QPSK信号,H信道冲激响应
Dt=round(rand(K,N_sym0)+1i*rand(K,N_sym0)); %发送K路QPSK信号
modDt=sqrt(Es/2)*(Dt*2-(1+1i));
HS=H*modDt; %接收端信号
Noise=sqrt(0.5)*(randn(L,N_sym0)+1i*randn(L,N_sym0)); %L路接收端的噪声
for n=n_init:len_SNR
count(n)=count(n)+1;
n0=N0(n);
RxDt=HS+sqrt(n0)*Noise; %接收信号(考虑L路噪声影响)
W=inv(H'*H+n0*eye(K))*H'; %最小均方误差法求逆矩阵
zt=W*RxDt;
estDt=(sign(real(zt))+1i*sign(imag(zt))+1+1i)/2;
err=abs(round(Dt-estDt)).^2;
BER(n)=BER(n)+sum(sum(err));
end
if mean(BER(n_init))>=N_err
n_init=n_init+1;
end
end
format short e; %format short e格式控制指令,表示5字长浮点数
BER=BER./(2*K*N_sym0*count);
semilogy(SNR_dB, BER, '-*');
strtitle=['MMSE for a ',num2str(K),'x',num2str(L),' QPSK System']; %strtitle表示字符标题
title(strtitle);
xlabel('Rx SNR per antenna (dB)');
ylabel('BER');
grid on;
mmse(最小均方误差).rar
需积分: 50 16 浏览量
2021-03-29
13:21:14
上传
评论 3
收藏 1KB RAR 举报
weixin_44367838
- 粉丝: 0
- 资源: 6
最新资源
- 毕业设计-仿生六足机器人的制作全教程源码+电子元器件+程序代码+线路组件图+安装教程+搭建视频教程
- 基于ROS和webots的xrobot机械臂仿真初探C++源码
- 基于ROS的点焊机器人仿真与控制python源码+文档说明+使用说明+详细注释
- 基于vue实现的细粒度交通时空大数据分析系统+源代码+文档说明
- 安卓大作业-基于Electron的交通时空大数据分析挖掘系统客户端(Android)+源代码+文档说明+界面截图
- 基于Java的朱氏集团客户关系管理系统设计源码
- 基于C++的作业提交与批改系统设计源码
- 基于Vue2的移动端电影资讯网站设计源码
- 高分课程设计作业-基于QT的模仿宝石迷阵游戏C++源码+文档说明+界面截图
- 基于Apache Spark的Spark DistCP重实现设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0