Hello. In my main M script I have:
N = 100;
alpha = zeros(N,1);
lambda = zeros(N, 9);
h = Hypothesis(X, T4, alpha, lambda);
J = @(alpha, lambda) SCBCost4(X, T4, alpha, lambda, h);
dJ_alpha = @(alpha, lambda) DerivCost_alpha(X, T4, lambda, h);
GAMMA = 0.01;
MAX_ITER = 100;
FUNC_TOL = 0.1;
Jvals = [];
progress = @(iter, alpha, lambda) fprintf('iter = %d: alpha = %s, lambda = %s, J(alpha, lambda) = %f\n', ...
iter, mat2str(alpha(1),3), mat2str(lambda(1, :),9), J(alpha, lambda));
iter = 1;
Jvals(iter) = J(alpha, lambda);
progress(iter, alpha, lambda);
while iter < MAX_ITER && Jvals(end) > FUNC_TOL
iter = iter + 1;
alpha = alpha - GAMMA * dJ_alpha(alpha, lambda);
Jvals(iter) = J(alpha, lambda);
progress(iter, alpha, lambda);
end
In function 'DerivCost_alpha' I have:
function dJ_alpha = DerivCost_alpha(X, y, lambda, h)
N = 100;
m = length(y);
h = Hypothesis (X, y, alpha, lambda);
s = zeros(N, m);
for n = 1:N
s(n, :) = sin(lambda(n, :)*X');
end
dJ_alpha = zeros(N, 1);
for n = 1:N
for j = 1:m
dJ_alpha(n, :) = dJ_alpha(n, :) + (1/m)*((h(j) - y(j))*s(n, i));
end
end
In function 'Hypothesis' I have:
function h = Hypothesis(X, y, alpha, lambda)
N = 100;
m = length(y);
S = zeros(N, m);
for n = 1:N
S(n, :) = (alpha(n))*sin((lambda(n, :))*X');
end
h = zeros(1, m);
for i = 1:m
h(i) = sum(S(:, i));
end
end
When I run it I get the next:
>> iter = 1: alpha = 0, lambda = [0 0 0 0 0 0 0 0 0], J(alpha, lambda) = 1426.354673
Error using alpha
Too many output arguments.
Error in DerivCost_alpha (line 5)
h = Hypothesis (X, y, alpha, lambda);
Error in Draft2>@(alpha,lambda)DerivCost_alpha(X,T4,lambda,h) (line 23)
dJ_alpha = @(alpha, lambda) DerivCost_alpha(X, T4, lambda, h);
Why could this error happen? I can't really understand. Please, help.
Thanks for reading!