
1、最近有大量小伙伴在问关于通信领域里面CVX的代码编写问题因此计划新开系列文章讲解无线通信优化问题中关于MATLAB CVX工具的使用。2、计划前期先写经典的简单通信问题的CVX求解以打实基础后期再针对目前热门的通信方向如RISNOMAUAVISAC等方向的复杂非凸问题的近似迭代后的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;%系统参数K4;%用户数 M4;%基站天线数 sigma20.025^2;%噪声功率 num_realizations20;%每个 gamma 下的信道样本数%扫描的 SINR 门限线性值 gamma_vec0.5:0.5:3;avg_powerzeros(size(gamma_vec));fprintf(开始扫描不同 gamma 值 (SDP方法)...\n);forg_idx1:length(gamma_vec)gammagamma_vec(g_idx);power_sum0;valid_count0;forz1:num_realizations%-----生成信道-----H_chrandn(K,M);%实高斯信道方差1 Hzeros(M,M,K);fori1:K h_iH_ch(i,:);%1xMH(:,:,i)h_i*h_i;%MxM 半正定 end%-----SDP 求解-----cvx_begin quiet variableX(M,M,K)complex variables(K,1)nonnegative%目标函数总发射功率取实部 obj0;fori1:K objobjreal(trace(X(:,:,i)));endminimize(obj)subject tofori1:K%信号项 sigreal(trace(H(:,:,i)*X(:,:,i)));%干扰项 cstr0;forj1:Kifj~i cstrcstrreal(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_sumpower_sumobj;valid_countvalid_count1;end endifvalid_count0avg_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公众号获取完整通信问题仿真代码