How we can use fminsearch with a vector as input and return a scaler as an output?

Technical Source
2 min readJun 12, 2023

Hello, I have the objective function and I want to minmize this gradiant. e is a vector of ones and y is a vector of size . The . I want find that minmize this objective function. Here is my attempt:

y = rand(1000, 1); % Random target values
e = ones(size(y))
global y

My target function is :

function gradient = gradient(h)
global y
gradient = 2 * (h*ones(size(y)) - y);
end

and then calling the function into fminsearch to get the result by :

mu_y = fminsearch( @(h)gradient(h),0);

and I got the error massage :

>> mu_y = fminsearch( @(h)gradient(h),0);
Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is
1000-by-1.
Error in fminsearch (line 201)
fv(:,1) = funfcn(x,varargin{:})

Can someone please help in this problem thanks.

NOTE:-

Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help , Finance Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.

y is 1000 x 1.

You are passing scalar 0 as the initial value for fminsearch() so at each step h will be 0 inside your gradient function.

gradient = 2 * (h*ones(size(y)) - y);

ones(size(y)) is 1000 x 1. h is scalar and scalar * 1000 x 1 is 1000 x 1. Subtract the 1000 x 1 y and you get a 1000 x 1. Multiply that by 2 and you get 1000 x 1 that is returned.

However fminsearch requires that you return a scalar.

You need to return something closer to

gradient = sum(2 * (h*ones(size(y)) - y).^2);

Note though that scalar * ones(size(y)) — y is going to give you the same result as (h — y) — the scalar would automatically be replicated to the size of y.

SEE COMPLETE ANSWER CLICK THE LINK

--

--

Technical Source

Simple! That is me, a simple person. I am passionate about knowledge and reading. That’s why I have decided to write and share a bit of my life and thoughts to.