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
Comments
Post a Comment