Hi,
I want to my objective to be:
objective<-Minimize(norm2(a-b[1,]) + norm2(a-b[2,]) + ..... + norm2(a-b[n,]))
where
a=Variable(2)
b is n x 2 matrix
How can I define this objective?
Hi,
I want to my objective to be:
objective<-Minimize(norm2(a-b[1,]) + norm2(a-b[2,]) + ..... + norm2(a-b[n,]))
where
a=Variable(2)
b is n x 2 matrix
How can I define this objective?
You can use for loops to build up an objective. Or you can use sum. In this case you can use sum with norms to get an efficient vectorized calculation.
cvx_begin
variable a(1,2)
minimize(sum(norms(repmat(a,n,1) - b,2,2)))
cvx_end
I leave you to check that this is correct. You can add constraints as appropriate.
help norms
norms Computation of multiple vector norms.
norms( X ) provides a means to compute the norms of multiple vectors
packed into a matrix or N-D array. This is useful for performing
max-of-norms or sum-of-norms calculations.All of the vector norms, including the false "-inf" norm, supported by NORM() have been implemented in the norms() command. norms(X,P) = sum(abs(X).^P).^(1/P) norms(X) = norms(X,2). norms(X,inf) = max(abs(X)). norms(X,-inf) = min(abs(X)). If X is a vector, these computations are completely identical to their NORM equivalents. If X is a matrix, a row vector is returned of the norms of each column of X. If X is an N-D matrix, the norms are computed along the first non-singleton dimension. norms( X, [], DIM ) or norms( X, 2, DIM ) computes Euclidean norms along the dimension DIM. norms( X, P, DIM ) computes its norms along the dimension DIM. Disciplined convex programming information: norms is convex, except when P<1, so an error will result if these non-convex "norms" are used within CVX expressions. norms is nonmonotonic, so its input must be affine.