hongyu.. 2022-02-12 20:56 采纳率: 100%
浏览 463
已结题

matlab关于CVX优化的问题

问题遇到的现象和发生背景

cvx目标函数表达式含有两个问题,一是表达式中含有求矩阵的核范数代码,即所有奇异值之和,二是含有Log(变量)的表达式;cvx约束表达式含有一个问题是想表达矩阵的对角线向量为全一向量

问题相关代码,请勿粘贴截图

cvx_begin sdp
    variable V(64,64) complex semidefinite
    variable p13  nonnegative
    variable p23  nonnegative
    variable p14  nonnegative
    variable p24  nonnegative
obj=1/2/rho*sum(svd(V))-log(trace(L1*Z*L1'*V')+sigmak^2+trace(L1*W1*L1'*V')+trace(L1*W2*L1'*V'))-log(trace(L2*Z*L2'*V')+sigmak^2+trace(L2*W1*L2'*V')+trace(L2*W2*L2'*V'))-trace((1/2/rho*null(Vt-max(eig(Vt))*eye(length(Vt)))*(null(Vt-max(eig(Vt))*eye(length(Vt))))'-1/log(2)*conj(L1)*(Z.'+W2.')*L1.'/(trace(L1*Z*L1'*Vt.')+sigmak^2+trace(L1*W2*L1'*Vt.'))-1/log(2)*conj(L2)*(Z.'+W1.')*L2.'/(trace(L2*Z*L2'*Vt.')+sigmak^2+trace(L2*W1*L2'*Vt.')))'*V);
minimize obj
subject to 
diag(V)=ones(64,1);
V>=0;
cvx_end
运行结果及报错内容

第一个错误关于求矩阵的核范数,其代码为sum(svd(V)),报错内容:错误使用 svd,第一个输入必须为单精度值或双精度值。
第二个错误是关于Log表达式的,代码为obj表达式中含有log的成分,报错内容:错误使用 cvx/log (第 64 行)
Disciplined convex programming error:
Illegal operation: log( {complex affine} ).
第三个错误关于规定矩阵V对角线为全一向量,代码为diag(V)=ones(64,1),报错内容为:无法将类型为 cvx 的值用作索引。
出错 main (第 141 行)
diag(V)=ones(M_irs,1);

我的解答思路和尝试过的方法

关于第一第三个我没有什么思路,第二个问题我想把Log(a+bi)的实数和虚数分开求,但是好像log中的表达式太过复杂,处理起来很是有很多问题

我想要达到的结果

可以运行通,不报错

  • 写回答

1条回答 默认 最新

  • SmallAntJ 2022-02-12 23:24
    关注

    核范数可以用 norm_nuc(V) 来求,规定矩阵V对角线为全一向量应该写成 diag(V) == ones(64,1);
    你可以研究一下这个用户手册 http://cvxr.com/cvx/doc/CVX.pdf

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 2月21日
  • 已采纳回答 2月13日
  • 创建了问题 2月12日

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建