Трассировка в пакете CVX

Я использую трассировку в своем коде CVX (MATLAB). Иногда это работает нормально, но иногда показывает некоторые ошибки. Сообщение об ошибке выглядит следующим образом:

"trace" ранее, по-видимому, использовался как функция или команда, что противоречило его использованию здесь как имени переменной. Возможной причиной этой ошибки является то, что вы забыли инициализировать переменную или неявно инициализировали ее, используя load или eval.

Я искал на сайте CVX, и я нашел это-

trace (Z) действителен, только если элементы по диагонали имеют одинаковую кривизну.

Я не мог понять из этого. Ждем любого щедрого предложения.

Ниже приведен фрагмент моего кода MATLAB, чтобы четко изложить мою проблему.

Программа, в которой он работает

%% Calling CVX Package
    G = zeros((M+1)*d,(M+1)*d);
    for i = 0:M
        G(i*d+(1:d),i*d+(1:d)) = eye(d);
    end
    cvx_precision best;
    cvx_begin
    variable G((M+1)*d,(M+1)*d) semidefinite           % Defining variables
    minimize(trace(C*G))                               % Objective function
    subject to
    % Constraints
    for i = 0:M
        G(i*d+(1:d),i*d+(1:d)) == eye(d);
    end
    cvx_end

Программа, где он дает ошибки

%% Calling CVX Package
Q = zeros(N,N);
    Mij = zeros(N,N);
    cvx_precision best;
    cvx_begin
    variable Q(N,N) semidefinite                       % Defining variables
    minimize(trace(Q))                                 % Objective function
    subject to
    % Constraints
    for i = 1:N-1
        for j = i:N
            if E(i,j) ~= 0
                Mij = Mij-Mij;
                Mij(i,j) = -1;
                Mij(j,i) = -1;
                Mij(i,i) = 1;
                Mij(j,j) = 1;
                trace(Mij*Q) = E(i,j);
            end
        end
    end

0 ответов

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