我对 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 移动到该行的右侧(如 trace(A1*R)<=0 : pi)
然后它返回另一个错误:
Too many output arguments
Error in alpha: r== diag(R);
发生什么事?
// 我在代码中添加了 cvx_setup 以确保安装了 cvx