I am new to CVX and MATLAB. I have tried to find the eigenvalues of a matrix that was constructed by using one of the decision variables. CVX doesn’t allow me to use eig() function. For example, I can’t print the eigenvalues other that the min (lambda_min) and max ones. Is there any way to use any of the eigenvalues as a right hand side of a constraint or in the objective function to be optimized?

lambda_sum_largest (convex) and lambda_sum_smallest (concave) are available. If, for example, your matrix is stochastic, then largest eigenvalue must be 1, so 2nd largest eigenvalue equals lambda_sum_largest (with k=2) minus 1. Tricks like that may be your only chance to do what you want.

Thank you very much for the help. My matrix is not actually stochastic, and in order to find the 3rd smallest eigenvalue, I used: lambda_sum_largest(A, k-1) - lambda_sum_largest(A,k-2). However, this still doesn’t work. Do you have any advises on this? Thanks