在Matlab中尝试编写梯度下降函数时,我收到以下错误:
Function with duplicate name "gradientDescent" cannot be defined
。我正在处理的程序中有两个函数,当我删除第二个函数时,问题就消失了。我不明白为什么会发生这种情况,因为这两个函数的名称完全不同。这是代码:
function dJ = computeDerivative(X, y, theta, feature)
m = length(y); % number of training examples
hypothesis = X * theta;
error = ((hypothesis - y) / m) .* X(feature, :)
dJ = sum(error);
end
function theta = gradientDescent(X, y, theta, alpha, num_iters)
%GRADIENTDESCENT Performs gradient descent to learn theta
% theta = GRADIENTDESENT(X, y, theta, alpha, num_iters) updates theta by
% taking num_iters gradient steps with learning rate alpha
m = length(y); % number of training examples
for iter = 1:num_iters
for i = 1:length(theta)
theta(i) = theta(i) - alpha * computeDerivative(X, y, theta, i)
end
end
end
答案 0 :(得分:0)
创建MATLAB函数时,每个函数都应位于单独的文件中,每个文件的名称应与函数名称相同。但是,如果您有一个主文件,并且需要一些本地函数,则可以在同一文件中编写本地函数,但只有main函数才能访问它。在你的情况下,computeDerivative是主函数,gradientDescent是本地函数