clc; % 清空命令窗口
clear; % 清除工作区变量
close all; % 关闭所有图形窗口
warning off; % 关闭警告
addpath(genpath(pwd)); % 添加当前目录及其子目录到 MATLAB 搜索路径
rng('default') % 使用默认随机数种子
Nt =4;% 发射天线数量
K = 2; % 用户数量
Nri = 2;% 接收天线数量
S = 2;% 每用户流的数量
Tc = 200;% 信道使用的符号数量
sigma2=1;% 噪声方差
SNRdbs=-10:3:30;% 信噪比(dB)范围
sum_rate1=zeros(1,length(SNRdbs));
sum_rate2=zeros(1,length(SNRdbs));
sum_rate3=zeros(1,length(SNRdbs));
sum_rate4=zeros(1,length(SNRdbs));
sum_rate5=zeros(1,length(SNRdbs));
sum_rate6=zeros(1,length(SNRdbs));
BER1=zeros(1,length(SNRdbs));
BER2=zeros(1,length(SNRdbs));
BER3=zeros(1,length(SNRdbs));
BER4=zeros(1,length(SNRdbs));
BER5=zeros(1,length(SNRdbs));
BER6=zeros(1,length(SNRdbs));
for i_SNR=1:length(SNRdbs)
SNR=10^(SNRdbs(1,i_SNR)/10);% 将dB转换为线性信噪比
P=sigma2*SNR;% 发射功率
count1=0;% 存储误码数
count2=0;% 存储信道容量
count3=0;
count4=0;
count5=0;
count6=0;
capacity1=0;
capacity2=0;
capacity3=0;
capacity4=0;
capacity5=0;
capacity6=0;
loop_num=400; % 循环次数
for i_loop=1:loop_num
q=rand(K*S,Tc)>=0.5;
s=QPSK_mapper(q,Tc,S,K);
H_real=randn(K*Nri,Nt);
H_imag=randn(K*Nri,Nt);
H=(1/sqrt(2))*complex(H_real,H_imag);
n_real=sqrt(sigma2/2)*randn(K*Nri,Tc/2);
n_imag=sqrt(sigma2/2)*randn(K*Nri,Tc/2);
n=complex(n_real,n_imag);
%sv % SVD 预处理
[W1,M1]=svdprecoding(H,K,S,P);
[U,D,V]=svd(H);
p1 = ones(1,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);
%MF处理
[W4]=MF(H,P,K,S);
[count_temp] = receiver(H,Nt,S,K,Tc,P,n,W4,eye(K*Nri),s,q);
count4=count4+count_temp;
capacity4=capacity4+sumrate(H,W4,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);
end
BER1(1,i_SNR)=count1/(loop_num*K*S*Tc);
BER2(1,i_SNR)=count2/(loop_num*K*S*Tc);
BER3(1,i_SNR)=count3/(loop_num*K*S*Tc);
BER4(1,i_SNR)=count4/(loop_num*K*S*Tc);
BER5(1,i_SNR)=count5/(loop_num*K*S*Tc);
BER6(1,i_SNR)=count6/(loop_num*K*S*Tc);
sum_rate1(1,i_SNR)=capacity1/loop_num/K;
sum_rate2(1,i_SNR)=capacity2/loop_num/K;
sum_rate3(1,i_SNR)=capacity3/loop_num/K;
sum_rate4(1,i_SNR)=capacity4/loop_num/K;
sum_rate5(1,i_SNR)=capacity5/loop_num/K;
sum_rate6(1,i_SNR)=capacity6/loop_num/K;
end
figure(1)
semilogy(SNRdbs,BER1(1,:),'b-o');
hold on;
semilogy(SNRdbs,BER2(1,:),'r-<');
hold on;
semilogy(SNRdbs,BER3(1,:),'c-p');
hold on;
semilogy(SNRdbs,BER4(1,:),'k-s');
hold on;
semilogy(SNRdbs,BER5(1,:),'y-*');
grid on;
semilogy(SNRdbs,BER6(1,:),'g-o');
grid on;
legend('SVD','BD','ZF','MF','SLNR','MMSE');
xlabel('SNR (dB)');
ylabel('BER');
hold on;
title('SNR=10dB时2个2天线用户MIMO系统误码率随Nt变化');
figure(2)
plot(SNRdbs,sum_rate1(1,:),'b-o');
hold on;
plot(SNRdbs,sum_rate2(1,:),'r-<');
hold on;
plot(SNRdbs,sum_rate3(1,:),'c-p');
hold on;
plot(SNRdbs,sum_rate4(1,:),'k-s');
hold on;
plot(SNRdbs,sum_rate5(1,:),'y-*');
grid on;
plot(SNRdbs,sum_rate6(1,:),'g-o');
grid on;
legend('SVD','BD','ZF','MF','SLNR','MMSE');
xlabel('SNR (dB)');
ylabel('合速率(bit/s/用户)');
hold on;
title('SNR=10dB时2个2天线用户MIMO系统合速率随Nt变化');
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1.版本:matlab2022A,包含仿真操作录像,操作录像使用windows media player播放。 2.领域:线性预编码 3.内容:svd,BD,ZF,MF,SLNR,MMSE线性预编码性能 [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); 4.注意事项:注意MATLAB左侧当前文件夹路径,必须是程序所在文件夹位置,具体可以参考视频录。
资源详情
资源评论
资源推荐
收起资源包目录
基于matlab的svd,BD,ZF,MF,SLNR,MMSE线性预编码性能对比仿真.rar (39个子文件)
2.jpg 42KB
1.jpg 60KB
仿真操作录像0015.avi 101.45MB
3.jpg 54KB
code
main1.m 5KB
MF.m 161B
SLNR2.m 815B
sumrate.m 2KB
SLNR.m 1003B
receiver.m 752B
BD2.m 1KB
ZF.m 148B
main2.m 5KB
MMSE.m 1KB
waterfilling.m 594B
BD.m 958B
svdprecoding.m 276B
QPSK_mapper.m 564B
fig
sum-rate10.fig 10KB
SVD_BD_BER_SNR.fig 8KB
sum-rate7.fig 12KB
BER3.fig 10KB
sum-rate4.fig 9KB
BER1.fig 10KB
sum-rate3.fig 9KB
sum-rate1.fig 9KB
sum-rate5.fig 10KB
BD_BER_SNR.fig 3KB
SVD_BD_BER3.fig 8KB
sum-rate8.fig 10KB
sum-rate9.fig 11KB
SNR=5dB时4个2天线用户MIMO系统合速率随Nt变化.fig 13KB
SVD_BD_rate_SNR.fig 8KB
SVD_BD_BER2.fig 8KB
SNR=5dB时4个2天线用户MIMO系统误码率随Nt变化.fig 11KB
sum-rate6.fig 13KB
sum-rate2.fig 10KB
BER2.fig 10KB
4.jpg 46KB
共 39 条
- 1
fpga和matlab
- 粉丝: 17w+
- 资源: 2636
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 现场评定检查表——建筑外墙、屋面保温和建筑外墙装饰.docx
- 现场评定检查表--气体灭火系统.docx
- 消防第三方技术服务模拟验收抽查记录表.doc
- 现场评定检查表——总平面布局.docx
- 消防验收过程服务--现场记录表.doc
- 消防第三方技术服务现场交底监督记录表.doc
- 向日葵被控端绿色精简运行版
- 学生心理档案表.docx
- 验收确认单表格.docx
- 阳宅净宅表文.docx
- 医疗废弃物建设项目环境风险简单分析表.docx
- 原材料检测报告.docx
- 造林补助实施方案小班一览表、造林补助(新增部分)分行政村(国有林场)任务落实情况表.xls
- 造林补助(新增部分)分行政村(国有林场)任务落实情况表.docx
- 肢体残疾标准.docx
- 职工工伤与职业病致残等级分级表十级.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论19