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

这篇具有很好参考价值的文章主要介绍了基于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博客

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

二. 代码

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

(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:20
    cap(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:20
    cap(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:20
    cap(1,i) = mimo_capacity(N,i,SNR);
end
%figure
plot(1:1:20,cap,'g')
hold on

SNR = 20;
for i = 1:1:20
    cap(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:20
    cap(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:20
    cap(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:20
    cap(1,i) = mimo_capacity(i,M,SNR);
end
plot(1:1:20,cap,'g')
hold on

SNR = 20;
for i = 1:1:20
    cap(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:10
    for j = 1:1:10
        c_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:20
    cap_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:30
    c(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:30
    c(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);
end

capacity = 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:3000
    H = 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);
    end
    C(1,i) = sum(C_temp);
end

cap = 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:30
    c(1,SNR+1) = alamouti(SNR);
end

plot(1:1:31,c)

三. 运行结果及分析

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

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

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

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

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

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

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

3.3 AWGN信道与瑞利信道容量

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

普通的AWGN信道模型

单收发天线;
当信噪比 SNR 1 增加到 31dB 时,信道容量也从 0.1375 增加到 6.658 bits/s/Hz
基于MATLAB计算MIMO信道容量(附完整代码与分析)

普通的瑞利信道模型

单收发天线;
当信噪比 SNR 1 增加到 31dB 时,信道容量也从 0 增加到 4.57 bits/s/Hz
在该模拟环境下,同一个SNR信噪比下,AWGN信道容量更高,AWGN信道模型优于瑞利信道模型。
3.4 空时编码信道容量
基于MATLAB计算MIMO信道容量(附完整代码与分析)
 

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

空时块码(Alamouti 码):

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

四. 总结

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

SISOSingle Input Single Output 单输入单输出系统文章来源地址https://www.toymoban.com/news/detail-425957.html

到了这里,关于基于MATLAB计算MIMO信道容量(附完整代码与分析)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • matlab代码--基于stbc编码的MIMO-OFDM系统的误码率分析

    空时分组编码STBC(Space Time Block Coding)用在无线通信中传输一个数据流的多个拷贝。通过许多天线来产生数据的多种接收版本,提高数据传输的可靠性。接收机接收到的数据拷贝中,存在一些比其它拷贝“更好”的拷贝。而这种冗余导致有更高机会使用一个或更多接收到数据

    2024年02月19日
    浏览(31)
  • 3D-MIMO信道模型的理论概述和matlab仿真

    目录 一、理论基础 二、核心程序 三、测试结果        信道模型的建模,其在不同场景中所对应的参数和分别都是不同的,因此,通过修改信道模型在角度域和延迟域[40]的特定的参数和分布,就可以获得不同的信道模型。        3D-MIMO(Three-Dimensional Multiple-Input Multiple-O

    2024年02月07日
    浏览(30)
  • 计算机网络-物理层(三)-信道的极限容量

    当信号在信道中传输失真不严重时,在信道的输出端,这些信号可以被识别 当信号在信道中,传输失真严重时,在信道的输出端就难以识别 造成失真的因素 码元传输速率 信号传输距离 噪声干扰 传输媒体质量 奈氏准则 香农公式 结论 在信道带宽一定的情况下,根据奈氏准则

    2024年02月12日
    浏览(25)
  • 【MATLAB源码-第36期】matlab基于BD,SVD,ZF,MMSE,MF,SLNR预编码的MIMO系统误码率分析。

    1. MIMO (多输入多输出):这是一个无线通信系统中使用的技术,其中有多个发送和接收天线。通过同时发送和接收多个数据流,MIMO可以增加数据速率和系统容量,同时提高信号的可靠性。 2. BD (块对角化):这是一种MIMO预编码策略,用于消除多用户干扰。它的目标是使每个用户

    2024年04月15日
    浏览(23)
  • 【计算机网络 02】物理层基本概念 传输媒体 传输方式 编码与调制 信道极限容量 章节小结

    2.1 物理层基本概念 2.2 物理层下的传输媒体 传输媒体 也称为 传输介质或传输媒介 ,他就是数据传输系统中在发送器和接收器之间的物理通路 传输媒体不属于计算机网络体系结构的任何一层 如果非要将它添加到体系结构中,那只能将其放置到物理层之下 2.3 传输方式 2.4 编码

    2024年02月16日
    浏览(44)
  • 物理层章节笔记-基本概念-传输媒体-传输方式-编码与调制-信道的极限容量--计算机网络

            1.物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输比特流。         2.物理层为数据链路层屏蔽了各种传输媒体的差异,使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体是什么。         计算机网络中的物理层,就

    2024年01月24日
    浏览(41)
  • 详解信道估计的发展与最新研究进展(MIMO)

    目录 一. MIMO信道估计的重要性 二. 最经典的两种信道估计方法 2.1 最小二乘信道估计(LS) 2.2 最小均方误差信道估计(MMSE)  三. 优化传统的MIMO信道估计技术 四. 介绍压缩感知技术 五. 基于压缩感知的MIMO信道估计 5.1 压缩感知怎么用在MIMO信道估计 5.2 改进压缩感知用在信道估计

    2023年04月09日
    浏览(29)
  • 详解信道容量,信道速率,安全速率的区别

    目录 一. 信道容量与信道速率 二. 小结 三. 安全速率与物理层安全 3.1 香农物理层安全模型 3.2 安全信道速率 四. 补充安全中断概率(Secrecy Outage Probability, SOP) 五. 补充安全分集度(Secrecy Diversity Order, SDO) 六. 附信道安全传输经常会出现的缩略词 先看信道容量C的公式: 其中

    2024年02月03日
    浏览(23)
  • 开源代码 | FMCW-MIMO雷达仿真MATLAB

    本文编辑:调皮哥的小助理 本程序来源:https://github.com/ekurtgl/FMCW-MIMO-Radar-Simulation,作者是阿拉巴马大学博士生艾库特格尔,研究方向主要是雷达信号处理人类活动识别以及雷达数据的机器学习应用,这份比较新的开源雷达仿真代码,值得大家学习。 下面主要分析代码的主要

    2023年04月20日
    浏览(36)
  • MIMO-OFDM无线通信技术(Matlab代码实现)

        目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 本代码为MIMO-OFDM无线通信技术及MATLAB实现。分为十章,供大家学习。 主函数部分代码: [1]黄丘林. MIMO无线通信技术研究[D].西安电子科技大学,2007. 部分理论引用网络文献,若有侵权联系博主删除。

    2023年04月16日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包