第【55期】-- 通信问题的cvx教程之基础篇【二】-- MU-MIMO下行功率分配问题SDR求解
1、最近有大量小伙伴在问关于通信领域里面CVX的代码编写问题,因此计划新开系列文章,讲解无线通信优化问题中关于MATLAB CVX工具的使用。
2、计划前期先写经典的简单通信问题的CVX求解以打实基础,后期再针对目前热门的通信方向,如RIS,NOMA,UAV,ISAC等方向的复杂非凸问题的近似迭代后的CVX求解。
3、本文为第【二】期,讲解MU-MIMO系统简单的功率分配问题的CVX代码,感兴趣的朋友后续可以点个关注后续追更。
- 博主往期所写热门文章:
cvx安装
无线通信中的优化问题+matlab中cvx的使用心得
文章目录
- 1. 引言
- 2 理论基础
- 2.1 信号模型
- 2.2 功率最小化问题
- 3. 半正定松弛
- 3.1 松弛问题
- 3.2 CVX代码
- 4 总结
1. 引言
多天线技术是第五代及未来移动通信系统的关键组成部分。在下行多用户场景中,基站利用多根天线同时服务多个单天线用户,通过空间复用显著提升频谱效率。然而,用户间干扰成为限制性能的主要因素,线性波束成形作为一种低复杂度方案被广泛研究。设计波束成形向量以最小化总发射功率同时满足每个用户的服务质量(QoS)需求(如SINR门限)是一个经典的优化问题。
该问题在波束成形向量空间中是非凸的,但其等价形式——发射协方差矩阵优化——可转化为凸半定规划问题,其核心思想是将秩一约束松弛为半正定约束。该方法在文献中被称为SDP松弛,已被证明在多数情况下能够给出最优的秩一解,或者在秩大于一时提供功率下界。
本文基于此框架,建立完整的系统模型,推导SDP松弛形式,并通过蒙特卡洛仿真分析随机信道下的功率性能。
2 理论基础
2.1 信号模型
2.2 功率最小化问题
3. 半正定松弛
半正定松弛理论基础:
Zhi-quan Luo 老师的经典著作 《Semidefinite Relaxation of Quadratic Optimization Problems》
3.1 松弛问题
松弛掉秩一约束,仅保留半正定约束,得到松弛问题
SDP松弛的最优值给出了原问题的最优功率的下界。若存在最优解满足秩一,则松弛是紧的,该解即为原始问题的最优波束成形。即使出现秩大于1,也可通过高斯随机化等后处理步骤获得良好的可行波束成形向量。
3.2 CVX代码
cvx代码是完全按照松弛问题的形式构造
clear;clc;%==========系统参数==========K=4;%用户数 M=4;%基站天线数 sigma2=0.025^2;%噪声功率 num_realizations=20;%每个 gamma 下的信道样本数%扫描的 SINR 门限(线性值) gamma_vec=0.5:0.5:3;avg_power=zeros(size(gamma_vec));fprintf('开始扫描不同 gamma 值 (SDP方法)...\n');forg_idx=1:length(gamma_vec)gamma=gamma_vec(g_idx);power_sum=0;valid_count=0;forz=1:num_realizations%-----生成信道-----H_ch=randn(K,M);%实高斯信道(方差1) H=zeros(M,M,K);fori=1:K h_i=H_ch(i,:);%1xMH(:,:,i)=h_i'*h_i;%MxM 半正定 end%-----SDP 求解-----cvx_begin quiet variableX(M,M,K)complex variables(K,1)nonnegative%目标函数:总发射功率(取实部) obj=0;fori=1:K obj=obj+real(trace(X(:,:,i)));endminimize(obj)subject tofori=1:K%信号项 sig=real(trace(H(:,:,i)*X(:,:,i)));%干扰项 cstr=0;forj=1:Kifj~=i cstr=cstr+real(trace(H(:,:,i)*X(:,:,j)));end end%SINR 约束 sig-gamma*cstr-s(i)==gamma*sigma2;%半正定约束X(:,:,i)==hermitian_semidefinite(M);end cvx_endifstrcmp(cvx_status,'Solved')power_sum=power_sum+obj;valid_count=valid_count+1;end endifvalid_count>0avg_power(g_idx)=power_sum/valid_count;fprintf('gamma=%.2f,有效次数=%d,平均功率=%.4f\n',gamma,valid_count,avg_power(g_idx));elseavg_power(g_idx)=NaN;fprintf('gamma = %.2f, 无可行的信道实现!\n',gamma);end end%==========绘图==========figure;plot(gamma_vec,avg_power,'b-o','LineWidth',2);xlabel('SINR 门限 \gamma (线性值)');ylabel('平均最小发射功率 (总功率)');title(['M=',num2str(M),', K=',num2str(K),', 噪声功率 \sigma^2=',num2str(sigma2),...', 每个\gamma下随机信道次数=',num2str(num_realizations)]);grid on;
可以看到:
- 这里信道,噪声并没完全按照通信的要求来,随便给了一个数值,只为体现cvx的用法; 约束和目标函数的写法和第二章的理论完全一致;
- 为了克服信道随机性的影响,对同一个横坐标,多次进行随机信道,取结果的平均值以克服随机性的影响。(通信论文里面常用,也叫蒙特卡洛仿真);
- CVX代码讲解其实蕴含在理论解释部分以及代码注释部分,这里不再赘述了。
- 仿真如图:模拟不同SINR要求下的最小功率的变化,SINR要求越高,系统的总发射功率就越大,且增长率也越大,符合物理意义
4 总结
本文给出了基于SDR的优化问题的求解代码,后续会继续给出其他问题。
关注博客vc公众号,获取完整通信问题仿真代码!
