2016-04-17 3 views
0

При попытке написать функцию для градиентного спуска в 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

Когда вы получите сообщение об ошибке? – aarbelle

+0

Поместите их в отдельные файлы. – beaker

+0

Я получаю сообщение об ошибке при попытке вызвать функцию gradientDescent во втором файле. Во втором файле нет функции с тем же именем, и я не добавил ее сюда, потому что тот факт, что ошибка удаляется после удаления второй функции из исходного файла, заставляет меня думать, что проблема локальная. –

ответ

0

При создании функции MATLAB, каждая функция должна быть в отдельном файле и имя каждого файла должно совпадать с именем функции. Если, однако, у вас есть основной файл, и вы хотите какую-то локальную функцию, вы можете записать локальную функцию в том же файле, но только основная функция будет иметь к ней доступ. В вашем случае computeDerivative является основной функцией и gradientDescent является локальной функцией

 Смежные вопросы

  • Нет связанных вопросов^_^