MIMO信道容量及注水算法---------Matlab
2015-06-24 21:41
2241 查看
一:实验内容
MIMO 信道容量;
注水算法原理;
采用计算机编程实现注水算法。
二:实验数据及具体步骤
求解 MIMO 信道容量最大化问题( 4)的步骤如下:
1)随机产生 H ,每个信道系数服从均值为 0,方差为 1 的高斯分布(对 Rayliegh 分布)
2) 奇异值分解 H UDV= H (利用 matlab SVD 函数)
3)计算 Λ = D DH
4)注水法求解问题( 9)
5)计算 = H
R VXVx ,根据( 3)计算容量(或者根据问题( 9)的最优值确定最大容量)。
MIMO 信道容量;
注水算法原理;
采用计算机编程实现注水算法。
二:实验数据及具体步骤
求解 MIMO 信道容量最大化问题( 4)的步骤如下:
1)随机产生 H ,每个信道系数服从均值为 0,方差为 1 的高斯分布(对 Rayliegh 分布)
2) 奇异值分解 H UDV= H (利用 matlab SVD 函数)
3)计算 Λ = D DH
4)注水法求解问题( 9)
5)计算 = H
R VXVx ,根据( 3)计算容量(或者根据问题( 9)的最优值确定最大容量)。
clc; nt=[2,4,8]; %发射天线的数目 nr=[2,4,8]; %接收天线的数目 Pt_db=[0:5:30]; %信噪比(单位dB) PT=10.^(Pt_db/10); %信噪比的单位转换 for i=1:3 for j=1:length(Pt_db) Cn=[]; for k=1:1000 %仿真时的抽样数量 H=(randn(nr(i),nt(i))+sqrt(-1)*randn(nr(i),nt(i)))/sqrt(2); %瑞利衰落信道矩阵 [U,D,V]=svd(H); A=D'*D; r=rank(H); a=1./diag(A); s=0; b=sort(a); for m=1:(r-1) s=s+m*(b(m+1)-b(m)); if s>PT(j) v=b(m+1)-(s-PT(j))/m; break; end end if s<PT(j) v=b(r)+(PT(j)-s)/r; end for n=1:r x(n)=max(v-a(n),0); end x=x(1:r); X=diag(x); Rx=V*X*V'; I=diag(ones(1,nr(i))); c=log(det(I+H*Rx*H')); Cn=[Cn,c]; end y(j)=real(sum(Cn)/1000); end plot(Pt_db,y); hold on; xlabel('Pt_db'); ylabel('容量,单位为bps'); title('MIMO信道容量及注水算法'); end
相关文章推荐
- MATLAB实用源代码
- 协方差,方差,期望的意义
- matlab中sum()求和函数
- PCA ( 主成分分析) 详解 ( 写给初学者) 结合matlab
- Matlab常用函数流水账
- 几种简单常用的镜头边缘检测算法(matlab实现)
- matlab中 tic,toc函数的用法
- 利用MATLAB绘制信号时域波形和信号的频谱
- [图像]Canny检测的Matlab实现(含代码)
- matlab中clc,close,close all,clear,clear all作用区别
- Matlab——zeros函数和ones函数
- win7运行matlab7.0闪一下就消失
- Matlab图像处理小结
- Matlab区分难点
- matlab函数 bsxfun浅谈
- Matlab与C++混合编程(依赖OpenCV)
- matlab练习程序(模拟退火SA)
- SSIM——基于结构相似性的图像质量评价(matlab)
- Matlab曲面拟合和插值
- matlab中的随机矩阵及其相关函数的使用