Writing mathematical function in code
Show older comments
Hi! Can somebody help me how to write the following function in Matlab?
(1/2*N)*||x||^2 + (1/2*N) Σ max(0.1-(v(i)*(x0+u(i)*x))^2) with i from 1 up to N
I thought to start from the max but i only know how to calculate the max of a matrix. Should i put the prices of (0.1-(v(i)*(x0+u(i)*x))^2) in a matrix and then find the max?
Thank you.
3 Comments
Walter Roberson
on 28 Nov 2019
Should i put the prices of (0.1-(v(i)*(x0+u(i)*x))^2) in a matrix and then find the max?
Possibly. You could vectorize,
(0.1-(v.*(x0+u.*x)).^2)
however it is not clear to me what max() is being taken with respect of. Is x possibly a vector?
If x is a vector then
max(0.1-(v(:).*(x0(:).'+u(:).*x(:).')).^2, 2)
would be the maximum over the x, in vectorized form. This requires R2016b or later to work as written.
The (:).' there are forcing whatever shape x0 and x are, to become row vectors. If you know for sure that x0 and x are row vectors then you can remove the (:).' operations (but you still need the (:) on v and u)
sissy sissy
on 28 Nov 2019
Walter Roberson
on 28 Nov 2019
max(0.1-(v(:).*(x0+u(:).*x(:).')).^2, 2)
Answers (0)
Categories
Find more on Surfaces, Volumes, and Polygons in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!