# Need Help with Convex Reformulation for Matrix Product in CVX Optimization

Hi everyone,

I’m currently tackling a minimization problem where the objective function involves the Frobenius norm of the difference between a reference matrix and a matrix that results from a 2D convolution. The challenge arises because this convolution is represented as a matrix multiplication involving optimization variables, which are not natively supported by MATLAB’s `conv2` function when used with CVX variables.

To work around this, I’ve redefined the 2D convolution as a matrix multiplication. However, the core issue now is that the operation includes products of two matrices. In a simple word the function f(x,y) = xy which I’m facing is not a convex function. This product leads to a “Disciplined convex programming error” due to the non-convex nature of the function.

Here’s a snippet of my code:

``````cvx_begin
cvx_solver gurobi

variable x(n^2 + m^2,1)

...

output_temp = reshape(double_blocked_cell * A_vec,output_col_num,output_row_num)';

...

My main problem is the multiplication `double_blocked_cell * A_vec`, which isn’t convex. I’m looking for ways to reformulate this problem to fit into the disciplined convex programming framework or to find an equivalent function that can represent the product of these two variables.