我正在尝试解决问题
d = 0.5 * ||X - \Sigma||_{Frobenius Norm} + 0.01 * ||XX||_{1},
其中 X 是对称正定矩阵,所有诊断元素都应为 1。XX 与 X 相同,但对角矩阵为 0。\Sigma 已知,我想要 X 的最小 d。
我的代码如下:
using Convex
m = 5;
A = randn(m, m);
x = Semidefinite(5);
xx=x;
xx[diagind(xx)].=0;
obj=vecnorm(A-x,2)+sumabs(xx)*0.01;
pro= minimize(obj, [x >= 0]);
pro.constraints+=[x[diagind(x)].=1];
solve!(pro)
MethodError:没有方法匹配 diagind(::Convex.Variable)
我只是通过约束矩阵中的对角元素来解决最优问题,但似乎 diagind 函数在这里不起作用,我该如何解决这个问题。