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

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 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!