My MATLAB code is as follows:
w_hat(:,j) = pinv(H_int + N_0 * eye(Nt)) * h(:,j,i);
The variable is addressed to H_int.
However, some errors occured when I ran the code, shown as below:
"Undefined function or method ‘svd’ for input arguments of type ‘cvx’."
I guess it must be illegal to use pinv for a variable in CVX.
So how can I express matrix inverse operation in CVX?
How to do matrix inverse in CVX
It depends on what you need to do with the inverse. For instance, matrix_frac is available, and it reformulates behind the scenes to an SDP, via Schur complement as you can see in this code segment from matrix_frac
elseif cvx_isaffine( x ) && cvx_isaffine( Y ),
n = size( x, 1 );
z = [];
cvx_begin
epigraph variable z
[Y x; x' z] == semidefinite( n+1 ); %#ok
cvx_end
If the matrix inverse appears in an inherently non-convex way, you will not be able to formulate it in a manner which CVX will accept.
You can get some ideas from chapters 4 and 5 of http://stanford.edu/~boyd/cvxbook/bv_cvxbook.pdf .
If matrix_frac does what you need, you can use that. Otherwise, you’ll have to reformualte your problem in a way which does not explicitly involve the inverse of a matrix which is a CVX variable or expression.