Ошибка возврата 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 установлен