Ошибка возврата cvx с определением функции не как определение скрипта

У меня очень странная ошибка с 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

А0, А1 даны. Когда я пишу приведенный выше код в форме сценария, он не возвращает никакой ошибки. Но я должен передать значение 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 установлен

0 ответов

Другие вопросы по тегам