目录
一.介绍
二. 代码
三. 运行结果及分析
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为5dBSNR = 5; %SNR in dBfor i = 1:1:20 cap(1,i) = mimo_capacity(N,i,SNR);endfigureplot(1:1:20,cap,'b')title('发射天线数目为4的情况')xlabel('接收天线数目')ylabel('信道容量 bits/s/Hz')hold on%SNR为10dBSNR = 10;for i = 1:1:20 cap(1,i) = mimo_capacity(N,i,SNR);end%figureplot(1:1:20,cap,'r')hold on%SNR为15dBSNR = 15;for i = 1:1:20 cap(1,i) = mimo_capacity(N,i,SNR);end%figureplot(1:1:20,cap,'g')hold onSNR = 20;for i = 1:1:20 cap(1,i) = mimo_capacity(N,i,SNR);end%figureplot(1:1:20,cap,'m')legend('5db','10dB','15dB','20db')%--------------发射天线变化--------------%M = 4;%发射天线cap = zeros(1,20);%SNR为5dBSNR = 5; %SNR in dBfor i = 1:1:20 cap(1,i) = mimo_capacity(i,M,SNR);endfigureplot(1:1:20,cap,'b')title('接收天线数目为4的情况')xlabel('发射天线数目')ylabel('信道容量 bits/s/Hz')hold on%SNR为10dBSNR = 10;for i = 1:1:20 cap(1,i) = mimo_capacity(i,M,SNR);end%figureplot(1:1:20,cap,'r')hold on%SNR为15dBSNR = 15;for i = 1:1:20 cap(1,i) = mimo_capacity(i,M,SNR);endplot(1:1:20,cap,'g')hold onSNR = 20;for i = 1:1:20 cap(1,i) = mimo_capacity(i,M,SNR);end%figureplot(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); endendfiguremesh(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);endfigureplot(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);endfigureplot(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);endfigureplot(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 decimalC = 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);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:30 c(1,SNR+1) = alamouti(SNR);endplot(1:1:31,c)
三. 运行结果及分析
代码运行后一共有六个图,其中一个3D图,没什么好解释的,这里省去。重点分析其他五个跟信道容量相关的图。
3.1 MIMO信道容量:固定发射天线数为4
3.2 MIMO信道容量:固定接收天线数为4
3.3 AWGN信道与瑞利信道容量
![](http://zhangshiyu.com/zb_users/upload/2023/05/20230503092136168307689616888.png)
普通的AWGN信道模型:
• 单收发天线; • 当信噪比 SNR 从 1 增加到 31dB 时,信道容量也从 0.1375 增加到 6.658 bits/s/Hz 。![](http://zhangshiyu.com/zb_users/upload/2023/05/20230503092136168307689692453.png)
普通的瑞利信道模型:
• 单收发天线; • 当信噪比 SNR 从 1 增加到 31dB 时,信道容量也从 0 增加到 4.57 bits/s/Hz 。 在该模拟环境下,同一个SNR信噪比下,AWGN信道容量更高,AWGN信道模型优于瑞利信道模型。 3.4 空时编码信道容量![](http://zhangshiyu.com/zb_users/upload/2023/05/20230503092136168307689630037.png)
空时编码分为空时块码和空时格码。哈佛大学教授Tarokh率先提出空时格码,结构复杂度很高。随后Alamouti提出空时块码,结构复杂度很低,但却性能也更好,该文章也被评为近50年最优秀的57篇文章之一,极大影响了MIMO技术。
空时块码(Alamouti 码):
• 2 根发射天线, 1 根接收天线的 MIMO (最简单的空时块码模型); • 当信噪比 SNR 从 1 增加到 31dB 时,信道容量也从 0.9261 增加到 9.55 bits/s/Hz; • 空时块码信道模型优于 AWGN 和瑞利信道模型。四. 总结
依据经典信息论, SISO 信道的自由度只有时间和频率两个维度, MIMO 引入多天线,扩展信道的自由度,包含时间、频率和空间三个维度,从而提升了 MIMO 的容量。SISO:Single Input Single Output 单输入单输出系统