当前位置: 首页 > news >正文

基于MATLAB计算MIMO信道容量(附完整代码与分析)

目录

一.介绍

二. 代码

三. 运行结果及分析

3.1  MIMO信道容量:固定发射天线数为4

3.2 MIMO信道容量:固定接收天线数为4

3.3 AWGN信道与瑞利信道容量

四. 总结


一.介绍

本文章将在MATLAB环境中分析MIMO信道容量,AWGN信道容量,瑞利信道容量和Alamouti码(空时块码)信道容量。

AWGN: Additive White Gaussian Noise 加性高斯白噪声

有关MIMO信道容量的具体解释,可参看此文章:

MIMO系统信道容量分析_mimo信道容量_唠嗑!的博客-CSDN博客

二. 代码

本节代码包含一个主运行文件;四个计算信道容量文件;两个函数文件

(1)main.m文件

主运行文件

clear;
clc;
close all;
%--------------Main--------------%
c_3d = zeros(10,10);
%--------------接收天线变化--------------%
N = 4;%发射天线
cap = zeros(1,20);
%SNR为5dB
SNR = 5; %SNR in dB
for i = 1:1:20cap(1,i) = mimo_capacity(N,i,SNR);
end
figure
plot(1:1:20,cap,'b')
title('发射天线数目为4的情况')
xlabel('接收天线数目')
ylabel('信道容量 bits/s/Hz')
hold on%SNR为10dB
SNR = 10;
for i = 1:1:20cap(1,i) = mimo_capacity(N,i,SNR);
end
%figure
plot(1:1:20,cap,'r')
hold on%SNR为15dB
SNR = 15;
for i = 1:1:20cap(1,i) = mimo_capacity(N,i,SNR);
end
%figure
plot(1:1:20,cap,'g')
hold onSNR = 20;
for i = 1:1:20cap(1,i) = mimo_capacity(N,i,SNR);
end
%figure
plot(1:1:20,cap,'m')
legend('5db','10dB','15dB','20db')%--------------发射天线变化--------------%
M = 4;%发射天线
cap = zeros(1,20);
%SNR为5dB
SNR = 5; %SNR in dB
for i = 1:1:20cap(1,i) = mimo_capacity(i,M,SNR);
end
figure
plot(1:1:20,cap,'b')
title('接收天线数目为4的情况')
xlabel('发射天线数目')
ylabel('信道容量 bits/s/Hz')
hold on%SNR为10dB
SNR = 10;
for i = 1:1:20cap(1,i) = mimo_capacity(i,M,SNR);
end
%figure
plot(1:1:20,cap,'r')
hold on%SNR为15dB
SNR = 15;
for i = 1:1:20cap(1,i) = mimo_capacity(i,M,SNR);
end
plot(1:1:20,cap,'g')
hold onSNR = 20;
for i = 1:1:20cap(1,i) = mimo_capacity(i,M,SNR);
end
%figure
plot(1:1:20,cap,'m')
legend('5db','10dB','15dB','20db')%--------------三维图展示MIMO----------------%
SNR = 15;
for i = 1:1:10for j = 1:1:10c_3d(i,j) = mimo_capacity(i,j,SNR);end
end
figure
mesh(1:1:10,1:1:10,c_3d)
title('3-dimension visual')%---------------AWGN SISO信道--------------%
cap_awgn = zeros(1,31);
for SNR = -10:1:20cap_awgn(1,SNR+11) = awgn_capacity(SNR);
end
figure
plot(1:1:31,cap_awgn)
title('awgn信道容量')
xlabel('SNR in dB')
ylabel('信道容量 bits/s/Hz')%---------------Raly SISO信道--------------%
c = zeros(1,31);for SNR = 0:1:30c(1,SNR+1) = ralychannel(SNR);
end
figure
plot(1:1:31,c)
title('瑞利信道容量')
xlabel('SNR in dB')
ylabel('信道容量 bits/s/Hz')%--------------Alamouti---------------%
c = zeros(1,31);for SNR = 0:1:30c(1,SNR+1) = alamouti(SNR);
end
figure
plot(1:1:31,c)
title('Alamouti码 2发1收')
xlabel('SNR in dB')
ylabel('信道容量 bits/s/Hz')

(2)awgn_capacity.m文件

AWGN信道容量

function capacity = awgn_capacity(SNR)SNR_D = 10^(0.1*SNR);
capacity = log2(1+SNR_D);end

(3)ralychannel.m文件

瑞利衰落信道容量

function capacity = ralychannel(SNR)h = raylrnd(1/sqrt(2),[1,1000000]);
c = zeros(1,length(h));
%SNR = 20;for i = 1:1:length(h)c(1,i) = log2(1+h(1,i)*SNR);
endcapacity = mean(c);end

(4)mimo_capacity.m文件

MIMO信道容量

function cap = mimo_capacity(N,M,SNR)SNR_D = 10^(SNR*0.1); %SNR in decimal
C = zeros(1,3000);for i = 1:1:3000H = generate_channel_matrix(N,M);[U,S,V] = svd(H);d = diag(S);C_temp = zeros(1,length(d));for j = 1:1:length(d)C_temp(1,j) = log2(1+d(j,1)^2*SNR_D/N);endC(1,i) = sum(C_temp);
endcap = mean(C);

(5)generate_channel_matrix.m文件

产生信道矩阵的文件

function H = generate_channel_matrix(N,M)
%N:发射天线个数
%M:接收天线个数
H = raylrnd(1/sqrt(2),M,N);end

(6)demo.m

实验文件

c = zeros(1,31);for SNR = 0:1:30c(1,SNR+1) = alamouti(SNR);
endplot(1:1:31,c)

三. 运行结果及分析

代码运行后一共有六个图,其中一个3D图,没什么好解释的,这里省去。重点分析其他五个跟信道容量相关的图。

3.1  MIMO信道容量:固定发射天线数为4

  • 横向对比:当接收天线数增加时,信道容量整体呈现增加趋势;
  • 拆分对比:固定发射天线数为4,接收天线数从1-4增加,信道容量显著增加。接收天线数继续增加时,信道容量增加的趋势相对降低;
  • 纵向对比:同一组收发天线数时,当信噪比从5dB,10dB,15dB,20dB不断增加时,信道容量也会增加。

3.2 MIMO信道容量:固定接收天线数为4

横向对比:当接收天线数增加时,信道容量整体呈现增加趋势;
拆分对比:固定发射天线数为4,接收天线数从1-4增加,信道容量显著增加。接收天线数继续增加时,信道容量增加的趋势相对降低;
纵向对比:同一组收发天线数时,当信噪比从5dB,10dB,15dB,20dB不断增加时,信道容量也会增加。
区别性:固定接收天线数为4,当发射天线数超过4以后,信道容量增加的幅度相比前一个3.1更加缓慢(图形更加接近一条水平线);
解释:该模拟信道环境下,接收天线相比发射天线变化,对信道容量的影响稍微大一些;

3.3 AWGN信道与瑞利信道容量

普通的AWGN信道模型

单收发天线;
当信噪比SNR1增加到31dB时,信道容量也从0.1375增加到6.658 bits/s/Hz

 

 

普通的瑞利信道模型

单收发天线;
当信噪比SNR1增加到31dB时,信道容量也从0增加到4.57 bits/s/Hz
在该模拟环境下,同一个SNR信噪比下,AWGN信道容量更高,AWGN信道模型优于瑞利信道模型。
3.4 空时编码信道容量

 

空时编码分为空时块码空时格码。哈佛大学教授Tarokh率先提出空时格码,结构复杂度很高。随后Alamouti提出空时块码,结构复杂度很低,但却性能也更好,该文章也被评为近50年最优秀的57篇文章之一,极大影响了MIMO技术。

空时块码(Alamouti 码):

2根发射天线,1根接收天线的MIMO(最简单的空时块码模型);
当信噪比SNR1增加到31dB时,信道容量也从0.9261增加到9.55 bits/s/Hz;
空时块码信道模型优于AWGN和瑞利信道模型。

四. 总结

依据经典信息论,SISO信道的自由度只有时间和频率两个维度,MIMO引入多天线,扩展信道的自由度,包含时间、频率和空间三个维度,从而提升了MIMO的容量。

SISOSingle Input Single Output 单输入单输出系统

http://www.lryc.cn/news/9772.html

相关文章:

  • CSDN城市开发者联盟、C友会期待你的加入
  • 【新2023】华为OD机试 - 吃火锅(Python)
  • 类似LeetCode的登录页面(小程序版)
  • CUDA的统一内存
  • MySQL-其他函数(补充)
  • MySQL Study Notes Design in 2023
  • C++ 修改防火墙firewall设置(Windows)
  • Spring 入门教程详解
  • day43【代码随想录】动态规划之一和零、完全背包理论基础
  • GEE学习笔记 七十八:干涸的洪泽湖
  • 双指针【灵神基础精讲】
  • tushare量化数据库模块怎么分析?
  • 模型转换 PyTorch转ONNX 入门
  • 【深度学习】激活函数
  • 【新2023】华为OD机试 - 数字的排列(Python)
  • [oeasy]python0085_ASCII之父_Bemer_COBOL_数据交换网络
  • volatile,内存屏障
  • 【ESP 保姆级教程】玩转emqx MQTT篇① —— 系统主题、延迟发布、服务器配置预算、常见问题
  • 第48讲:SQL优化之ORDER BY排序查询的优化
  • [Datawhale][CS224W]图机器学习(三)
  • 2023版最新最强大数据面试宝典
  • CSS 中的 BFC 是什么,有什么作用?
  • 总结在使用 Git 踩过的坑
  • 从 HTTP 到 gRPC:APISIX 中 etcd 操作的迁移之路
  • 【C语言每日一题】——倒置字符串
  • Native扩展开发的一般流程(类似开发一个插件)
  • 【新解法】华为OD机试 - 任务调度 | 备考思路,刷题要点,答疑,od Base 提供
  • Spring3定时任务
  • 数据库版本管理工具Flyway应用研究
  • 更换 Ubuntu 系统 apt 命令安装软件源