I would like to ask, if my objective function is a transformation of variable(s), can I change s in cvx? I used tatol to indicate how to change s
You should declare tatol
as an expression (holder) http://cvxr.com/cvx/doc/basics.html#assignment-and-expression-holders
expression tatol(TNum+1)
instead of
variable tatol(TNum+1)
Also, norm of norm is not allowed., But the one norm of a vector of norms is just the sum of those norms… So use
minimize(sum(tatol))
However, instead of introducing tatol
and using a for loop, you may be able to use sum(norms(...))
. I leave that as an exercise to you. The for loop is o.k., but may be slower.
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.
I love you, Mark. I’m going to study now