基于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信道模型:
•单收发天线;•当信噪比SNR从1增加到31dB时,信道容量也从0.1375增加到6.658 bits/s/Hz。
普通的瑞利信道模型:
•单收发天线;•当信噪比SNR从1增加到31dB时,信道容量也从0增加到4.57 bits/s/Hz。

空时编码分为空时块码和空时格码。哈佛大学教授Tarokh率先提出空时格码,结构复杂度很高。随后Alamouti提出空时块码,结构复杂度很低,但却性能也更好,该文章也被评为近50年最优秀的57篇文章之一,极大影响了MIMO技术。
空时块码(Alamouti 码):
•2根发射天线,1根接收天线的MIMO(最简单的空时块码模型);•当信噪比SNR从1增加到31dB时,信道容量也从0.9261增加到9.55 bits/s/Hz;•空时块码信道模型优于AWGN和瑞利信道模型。
四. 总结
SISO:Single Input Single Output 单输入单输出系统
相关文章:
基于MATLAB计算MIMO信道容量(附完整代码与分析)
目录 一.介绍 二. 代码 三. 运行结果及分析 3.1 MIMO信道容量:固定发射天线数为4 3.2 MIMO信道容量:固定接收天线数为4 3.3 AWGN信道与瑞利信道容量 四. 总结 一.介绍 本文章将在MATLAB环境中分析MIMO信道容量,AWGN信道容量…...
CSDN城市开发者联盟、C友会期待你的加入
文章目录🌟 课前小差🌟 chatGPT🌟 CSDN中的持续学习🌟 23年原力计划🌟 C友会、CDC🌟 如何关联本地的开发者?🌟 写在最后🌟 课前小差 哈喽,大家好,…...
【新2023】华为OD机试 - 吃火锅(Python)
华为 OD 清单查看地址:blog.csdn.net/hihell/category_12199275.html 吃火锅 题目 入职后,导师会请你吃饭,你选择了火锅, 火锅里会在不同时间下很多菜, 不同食材要煮不同时间,才能变得刚好合适, 你希望吃到最多的刚好合适的菜, 但是你的手速不够快用m代替手速, 每次…...
类似LeetCode的登录页面(小程序版)
前言每一个项目都会有用户端的注册和登录页面,对于刚入门的小白来说,在UI设计方面不太擅长,就算大致的UI界面设计出来了,但是落实到代码上来实现的时候就很容易卡住。这篇博客主要介绍的就是仿作一个类似LeetCode登录的简约大方页…...
CUDA的统一内存
CUDA的统一内存 文章目录CUDA的统一内存N.1. Unified Memory IntroductionN.1.1. System RequirementsN.1.2. Simplifying GPU ProgrammingN.1.3. Data Migration and CoherencyN.1.4. GPU Memory OversubscriptionN.1.5. Multi-GPUN.1.6. System AllocatorN.1.7. Hardware Coh…...
MySQL-其他函数(补充)
格式化函数FORMAT(x, n) 例:将数字x进行格式化,以四舍五入的方式保留n位小数,结果以字符串的形式返回mysql> select format(12.3456,3),format(2.2,4),format(9.333,0); --------------------------------------------------- | format(12…...
MySQL Study Notes Design in 2023
文章目录1 概述1.1 MySQL相关概述1.2 数据模型1.3 SQL分类2 数据库设计-DDL2.1 约束2.2 字段3 数据库操作-DML3.1 增加(insert)1 概述 1.1 MySQL相关概述 数据库:英文为 DataBase,简称DB,它是存储和管理数据的仓库。 数据库管理系统…...
C++ 修改防火墙firewall设置(Windows)
文章目录1、简介1.1 防火墙概述1.2 入站,还是出站?1.3 防火墙规则优先级2、系统界面方式3、命令行方式3.1 防火墙基本状态设置3.2 入站出站规则设置3.3 其他设置3.4 telnet检测端口4、C方式4.1 注册表4.2 COM(Windows XP)4.3 COM&…...
Spring 入门教程详解
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
day43【代码随想录】动态规划之一和零、完全背包理论基础
文章目录前言一、一和零(力扣474)二、完全背包前言 1、一和零 2、完全背包理论基础 一、一和零(力扣474) 求装满这个背包最多有多少个物品 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集…...
GEE学习笔记 七十八:干涸的洪泽湖
今天看了一篇报道直击60年一遇气象干旱:洪泽湖缩小近一半,鱼蟹受灾严重!_新华报业网(直击60年一遇气象干旱:洪泽湖缩小近一半,鱼蟹受灾严重!),既然玩GEE那就要玩出点花样…...
双指针【灵神基础精讲】
来源0x3f:https://space.bilibili.com/206214 文章目录同向双指针[209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/)[713. 乘积小于 K 的子数组](https://leetcode.cn/problems/subarray-product-less-than-k/)[3. 无重复字符的最…...
tushare量化数据库模块怎么分析?
tushare量化数据其实包含的数据库有些是需要收费的,也有些会免费提供,不过tushare量化数据库整个库就很大很大,涉及的范围也广,挖掘这些数据还得从量化股票接口说起,就比如说在股票量化领域,tushare量化数据…...
模型转换 PyTorch转ONNX 入门
前言 本文主要介绍如何将PyTorch模型转换为ONNX模型,为后面的模型部署做准备。转换后的xxx.onnx模型,进行加载和测试。最后介绍使用Netron,可视化ONNX模型,看一下网络结构;查看使用了那些算子,以便开发部署…...
【深度学习】激活函数
上一章——认识神经网络 新课P54介绍了强人工智能概念,P55到P58解读了矩阵乘法在代码中的应用,P59,P60介绍了在Tensflow中实现神经网络的代码及细节,详细的内容可以自行观看2022吴恩达机器学习Deeplearning.ai课程,专…...
【新2023】华为OD机试 - 数字的排列(Python)
华为 OD 清单查看地址:blog.csdn.net/hihell/category_12199275.html 数字的排列 题目 小华是个很有对数字很敏感的小朋友, 他觉得数字的不同排列方式有特殊的美感。 某天,小华突发奇想,如果数字多行排列, 第一行1个数, 第二行2个, 第三行3个, 即第n行n个数字,并且…...
[oeasy]python0085_ASCII之父_Bemer_COBOL_数据交换网络
编码进化 回忆上次内容 上次 回顾了 字符编码的 进化过程 IBM 在数字化过程中 作用 非常大IBM 的 BCDIC 有 黑历史 😄 6-bit的 BCDIC 直接进化成 8-bit的 EBCDIC补全了 小写字母 和 控制字符 在ibm就是信息产业的年代 ibm的标准 怎么最终 没有成为 行业的标准 呢…...
volatile,内存屏障
volatile的特性可见性: 对于其他线程是可见,假设线程1修改了volatile修饰的变量,那么线程2是可见的,并且是线程安全的重排序: 由于CPU执行的时候,指令在后面的会先执行,在指令层级的时候我们晓得volatile的特性后,我们就要去volatile是如何实现的,这个很重要!&#…...
【ESP 保姆级教程】玩转emqx MQTT篇① —— 系统主题、延迟发布、服务器配置预算、常见问题
忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-02-18 ❤️❤️ 本篇更新记录 2023-02-18 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请…...
第48讲:SQL优化之ORDER BY排序查询的优化
文章目录1.ORDEY BY排序查询优化方面的概念2.ORDER BY排序的优化原则3.ORDER BY排序优化的案例3.1.准备排序优化的表以及索引3.2.同时对nl和lxfs字段使用升序排序3.3.同时对nl和lxfs字段使用降序排序3.4.排序时调整联合索引中字段的位置顺序3.5.排序时一个字段使用升序一个字段…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
