“无法定义具有重复名称的函数”错误但没有重复的功能

时间:2016-04-17 18:09:27

标签: matlab gradient-descent

在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

1 个答案:

答案 0 :(得分:0)

创建MATLAB函数时,每个函数都应位于单独的文件中,每个文件的名称应与函数名称相同。但是,如果您有一个主文件,并且需要一些本地函数,则可以在同一文件中编写本地函数,但只有main函数才能访问它。在你的情况下,computeDerivative是主函数,gradientDescent是本地函数