Hi everybody. I need your help.
I wrote this scripts in Matlab, and it works nicely.
cvx_begin quiet cvx_precision default variables v(3,1) real; expression MM(length(M)); MM = sum(reshape(Mstack*v+repmat(pos',[512,1]),[3,512]).^2,1); minimize max(MM) cvx_end
- pos is a [3,1] vector
- Mstack is a [1536,3] matrix composed by 512 [3,3] matrix (in columned) rappresenting each vertex of a [3,3] interval matrix.
I need to translate it in python code. I try with the code below, but it doesn’t work.
import numpy as np from numpy import linalg as LA import numpy.matlib import scipy import cvxpy as cvx # V is my Mstack in Matlab script, a [1536,3] array. v1 = cvx.Variable() v2 = cvx.Variable() v3 = cvx.Variable() v = np.array([v1,v2,v3]) v.shape = (3,1) exp = np.sum(np.square(np.reshape(V.dot(v)+np.matlib.repmat(pos,512,1),(3,512), order='F')),axis=0) obj = cvx.Minimize(np.amax(exp)) prob = cvx.problem(obj) prob.solve()
I can’t find a way to solve it. But everytime I try to change the expression I’ve got a different error, for example:
"ValueError: setting an array element with a sequence." "Exception: Cannot evaluate the truth value of a constraint or chain constraints, e.g., 1 >= x >= 0" "Forming a nonconvex expression (affine)*(affine)."
I’m sure it has to work, in matlab it’s all fine.
Thank for your time