2016-04-17 12 views
0

Matlabの勾配降下関数を書く際に、次のエラーが発生しました: Function with duplicate name "gradientDescent" cannot be defined。私が取り組んでいるプログラムには2つの機能があり、2つ目の機能を削除すると問題はなくなります。私は、2つの関数が全く異なる名前を持っているので、なぜこれが起こっているのか分かりません。ここでは、コードです:「重複する名前の関数は定義できません」エラーですが、重複する関数はありません

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

2番目のファイルで 'gradientDescent'関数を呼び出す際にエラーが発生します。 2番目のファイルに同じ名前の関数はありません。元のファイルから2番目の関数を削除した後にエラーがなくなるため、問題はローカルであると考えられます。 –

答えて

0

あなたはMATLAB関数を作成すると、各機能が別のファイルにする必要があり、各ファイルの名前は、関数の名前と同じでなければなりません。しかし、メインファイルを持っていてローカル関数をいくつか使用したい場合は、ローカル関数を同じファイルに書くことができますが、main関数だけがその関数にアクセスできます。あなたのケースでは、computeDerivativeがメイン関数で、gradientDescentがローカル関数です

関連する問題