This is my code and I am getting error" not enough input parameters" in line 4 .Can anyone please rectify the problem ?
function[jval, gradient]= costfuntion(theta)
jval= (theta(1)-5)^2 + ...
(theta(2)-5)^2;
gradient= zeros(2,1);
gradient(1)= 2*(theta(1)-5);
gradient(2)= 2*(theta(2)-5);
options = optimset('GradObj','on', 'MaxIte', 100);
initialTheta= zeros(2,1);
[optTheta,funcval, exitFlag]= fminunc(@costfunction, initialTheta, options);

2 Kommentare

Hi! May I know how you're trying to call this function? According to my understanding, you're trying to operate on a matrix with two elements. A possible call to this function could be:
costfuntion([10 20])
Walter Roberson
Walter Roberson am 14 Jun. 2020
The lines start from options need to be either before the function or else in a different file.

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

KSSV
KSSV am 13 Jun. 2020

0 Stimmen

I think you are running your code by using either run button or F5 button. This is a function, you cannot run like that. You need to save it in a directory on the name costfunction.m. And call it in command window.
theta = rand(1,2) ; % some random values for demo
[jval, gradient]= costfunction(theta) ;
I have checked the code, it is running fine.

1 Kommentar

ananya mittal
ananya mittal am 14 Jun. 2020
I am trying this on MATLAB 2017a. It is running an infinite loop of error. And shows the error
"THROWFMINUNCGRADOBJANDLARGESCALEWARNING throws a warning for the
% following case. For R2017a and R2017b only, we are still supporting
% "optimset" users who specify the trust-region algorithm in fminunc via
% the GradObj and LargeScale options for fminunc. From 18a onwards,
% LargeScale will be ignored for fminunc and users will have to use
% Algorithm."

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by