0

I want to implement a convex-relaxation for the E-optimality design criterion, that is: By defining enter image description here the optimization problem would be ![image|690x93](upload://bhzScphdFramadboKIQhieamQSO.png)

I have implemented in Matlab using this function

function [d] = e_optimality(Uk, s, sigma)
%% E-OPTIMALITY DESIGN CRITERION, CONVEX RELAXATION
%   
%       OUTPUT: sampling_set= vector with ordered sampling
%       set
%
%       INPUT: Uk= NxK Laplacian eigenvector in the selected band
%              s= number of samples
%              sigma: entry noise matrix

N= size(Uk,1);
Sigma= diag(sigma*ones(N,1))
Sigma_inv= inv(Sigma);


cvx_begin
variable d(N)
D= diag(d)
B= Uk'*Sigma_inv* D*Uk;
minimize -lambda_min(B)
subject to
           d*ones(N,1)==s;
           0<=d<=1;
cvx_end

Unfortunately, when launghing the function I have the following error:

One or more output arguments not assigned during call to "varargout".

Error in minimize (line 14)
    x = evalin( 'caller', sprintf( '%s ', varargin{:} ) );

Error in e_optimality (line 20)
    minimize -lambda_min(B)

It seems to be the minimize -lambda_min in CVX causing the problem. What could it be? Thank you

VanBaffo
  • 259
  • 1
  • 2
  • 13
  • Have you maybe redefined the `evalin` or `sprintf` functions? `which -all evalin` should tell you. – Cris Luengo Apr 03 '19 at 22:10
  • It doesn't seems.. this is the output `>> which -all evalin built-in (/home/alberto/MATLAB/R2017b/toolbox/matlab/lang/evalin) >> which -all sprintf built-in (/home/alberto/MATLAB/R2017b/toolbox/matlab/strfun/sprintf) /home/alberto/MATLAB/R2017b/toolbox/distcomp/parallel/@codistributed/sprintf.m % codistributed method /home/alberto/MATLAB/R2017b/toolbox/distcomp/gpu/@gpuArray/sprintf.m % gpuArray method` – VanBaffo Apr 04 '19 at 07:13

0 Answers0