\mathcal{F}_{x_i}\in \mathbb{R}^{N \times T \times N}


(Clemente ) #1

Hello all,

Sorry if it is a naive question, but is there any way to implement an algorithm on cvx to solve the following problem:
\begin{array}{l}
\min \left| \psi^T \mathcal{F}_{x} \psi \right|^2 2+\left| \psi^T \mathcal{F}{y}\psi \right|^2 2+\left| \psi^T \mathcal{F}{z} \psi \right|^2 _2
\end{array}

where \mathcal{F}_{x_i}\in \mathbb{R}^{N \times T \times N}, \ x_i=x,y,z; \psi \in \mathbb{R}^{N} and N,T \in \mathbb{N}

Thanks in advanced.

Clemente


(Mark L. Stone) #2

You need to tell us which variables are the decision (optimization) variables and which are the input data.

Are \mathcal{F}_{x}, \mathcal{F}_{y}, \mathcal{F}_{z} each N by T by N, i.e., 3D arrays (tensors)? If so, what do their multiplications mean?


(Clemente ) #3

Hi again,
Thanks for the quick answer. Sorry for the incomplete equation. The optimization variable is \psi \in \mathbb{R}^{N }, and the optimization problem can be written, for example as
\begin{array}{l}
\min \Big[ |E \psi-E_{target} |^2_2 + \alpha \big[
\left | \psi^T \mathcal{F}{x} \psi \right|^2_2+\left| \psi^T \mathcal{F}{y}\psi \right|^2_2+\left| \psi^T \mathcal{F}_{z} \psi \right|^2 _2 \big]\Big]
\end{array}

where E \in \mathbb{R}^{M \times N}, E _{target} \in \mathbb{R}^{M }, \mathcal{F}_{x_i}\in \mathbb{R}^{N \times T \times N} and \alpha \in \mathbb{R} are known quantities.

Basically I am struggling to implement on cvx | \psi^T \mathcal{F}_{x_i}\psi |^2 _2, which is the norm of a vector in \mathbb{R}^{T } .

Thanks a lot!

Clemente


(Mark L. Stone) #4

I will assume each of \mathcal{F}_{x}, \mathcal{F}_{y}, \mathcal{F}_{z} are 2D (not 3D) symmetric positive semidefinite. Non-symmetry can be dealt with, but if not psd, your problem is non-convex.

You seen to want to solve some problem different than this, which would have a vector, not scalar, as argument of the norm. If so, you need to explain what the mathematical operation is between the vector and the 3D tensor which produces a vector. Show us a small example in MATLAB, not CVX, with numerical values for psi in which you calculate the numerical value of the desired objective function.

cvx_begin
variables psi(N) 
minimize(square_pos(psi * F_x * psi + square_pos(psi' * F_y * psi  + square_pos(psi' * F_z * psi))
% Insert constraints. If there are no constraints, optimal variable values are all zeros.
cvx_end

If you really do have a quadratic form with 2D slices of a 3D tensor, then you ought to be able to apply sum_suare_pos on the resulting vector to get the two-norm squared


(Clemente ) #5

Thanks again. That is my problem that \mathcal{F}_{x}, \mathcal{F}_{y}, and \mathcal{F}_{z} are 3D.
Actually when trying to use the suggested approach I get the error

Error using * (line )
Input arguments must be 2-D.

\mathcal{F}_{x_i}(:,:,t) with t=1,...T are positive semidefinite but no necessarily symmetric.

Any suggestion on how to deal with the 3D matrices in the optimization problem?

Cheers


(Mark L. Stone) #6

As I wrote before, you need to clearly specify what the relevant math is.

Forget CVX and optimization for the moment. Given numerical values of these “things”, you need to be able to evaluate the objective function. You need to be able to specify the operations in MATLAB (not CVX) id all things are numerically populated MATLAB variables.

It sounds like you don’t even know what the math is. Did you copy this out of a paper or book? AS of now, you don’t have a CVX matter to resolve, you have a matter of specifying a well-defined mathematical problem formulation.

My wild guess is that for each of T 2D slices of the F’s, you have a standard quadratic form. Assemble the T quadratic forms into a vector. So, for j from 1 to T, you have x' * reshape(F(:,j,:),[N,N]) * x


(Clemente ) #7

I’ll have a go with that. Thanks a lot.


(Mark L. Stone) #8

Note that you have been inconsistent, referring to F as being N by T by N, but in another post referring to F(:,:,t) for t= 1:T. If the latter, you can straighforwardly form the quadratic form as
x' * F(:,:,t) * x. However, if the former, then due to the fussiness of MATLAB, you will need to do
x ' *reshape(F(:,t,:),[N,N]) * x . My previous post, now corrected, failed to use reshape and would have produced a MATLAB error message.