Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用MATLAB CVX解决此优化问题?_Matlab_Optimization_Convex Optimization_Cvx - Fatal编程技术网

如何使用MATLAB CVX解决此优化问题?

如何使用MATLAB CVX解决此优化问题?,matlab,optimization,convex-optimization,cvx,Matlab,Optimization,Convex Optimization,Cvx,我使用以下代码来解决这个问题 %System parameters: N = 2; K = 8; M = 4; C_l=4; H = [0.1185 0.2811; 0.3550 0.8224; 0.3260 0.9644; 0.5333 0.6083; 0.6871 0.2298; 0.2594 0.8361; 0.1309 0.2454; 0.4715 0.2111]; %(K,N) matrix A = [-1 1; 1 0]; %(N,N) integer matrix C = [0 -

我使用以下代码来解决这个问题

%System parameters:
N = 2;
K = 8;
M = 4;
C_l=4;
H = [0.1185 0.2811; 0.3550 0.8224; 0.3260 0.9644; 0.5333 0.6083; 0.6871 0.2298; 0.2594 0.8361; 0.1309 0.2454; 0.4715 0.2111]; %(K,N) matrix
A = [-1 1; 1 0]; %(N,N) integer matrix
C = [0 -1 1 1; 0 -1 1 1; 0 1 -1 0; 0 1 -1 0; -1 0 1 -1; -1 0 1 -1; 1 0 0 -1; 1 0 0 -1]; %(N,M) integer matrix
P = 125*eye(M); %(M,M) diagonal matrix
P_u = 125*eye(K); %(K,K) diagonal matrix
S1 = [0.5623    0.5610    0.8769    0.6921    0.8645    0.8924    0.8373    0.8927]; %(1,K) vector
% I want to find matrix B with dimensions N*M that minimizes the difference
% between S2 and S1 vectors.
cvx_begin
  variable B(N,M)
    %calculate S2 from B and the other given inputs
        for j=N:-1:1
            d(j) = (B(j,:)*P*B(j,:)')/((2^(2*C_l))-(norm(A(j,:))^2));
        end
        D = diag(d);        
        for i=K:-1:1   
            V(i)=C(i,:)*P*B'*H(i,:)'*inv(1+H(i,:)*(A'*D*A+B*P*B')*H(i,:)');
            sigma(i)=norm((V(i)*H(i,:)*B-C(i,:))*(P^(1/2)))^2+(V(i)^2)*(1+H(i,:)*A'*D*A*H(i,:)');           
            S2(i)=0.5*(log2((P_u(i,i))/(sigma(:,i))));
        end
  minimize(sum(S2-S1).^2)
  subject to
  for k=1:1:K
      S2(k) >= S1(k);
  end
cvx_end
我收到了以下错误:

Error using  *  (line 126)
Disciplined convex programming error:
    Only scalar quadratic forms can be specified in CVX
.

Error in doOptimization3 (line 24)
            V(i)=C(i,:)*P*B'*H(i,:)'*inv(1+H(i,:)*(A'*D*A+B*P*B')*H(i,:)');
谁能帮我修改我的代码来解决这个问题,因为我是一个使用cvx的初学者