我对cvx / matlab有一个非常奇怪的错误。
我想解决SDP问题以获得双变量。这是我的代码。
addpath(<cvx_directory>)
cvx_setup
cvx_begin
variable r(n);
variable R(n,n) symmetric;
dual variable alpha;
dual variable pi;
minimize(trace(A0*R))
pi: trace(A1*R) <=0;
alpha: r== diag(R);
[R r;r' 1] == semidefinite(n+1);
cvx_end
给出A0,A1。 当我在脚本表单中编写上述代码时,它不会返回任何错误。 但是我应该传递n的值(变量的大小),因此我在函数表单中编辑了上面的代码(在第一行添加函数[output] = sdp(n))然后它返回错误:
Undefined operator ':' for input arguments of type 'cvx'.
Error in pi: trace(A1*R) <=0;
如果我将双变量pi移动到该行的右侧(如跟踪(A1 * R)&lt; = 0:pi)
然后它返回另一个错误:
Too many output arguments
Error in alpha: r== diag(R);
会发生什么?
//我在代码中添加了cvx_setup以确保安装了cvx