2017-02-06 18 views
-1
[theta , J] = gradientDescent(X , Y , theta , alpha , iteratons); 
theta , J = gradientDescent(X , Y , theta , alpha , iterations); 

上記の2つのステートメントを実行すると、私は異なる結果を得ました。最初のものは私に希望のものを与えましたが、2番目のものはありませんでした。どうして?MATLAB(R2016a)。これら2つのステートメントはどのように異なっていますか?

EDIT:

これは、関数の宣言です:

function [theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters) 
+1

この関数はタプルを返しますか? https://de.mathworks.com/help/matlab/ref/function.htmlを参照してください。 – Fildor

答えて

3

関数から複数の出力を指定するには、[]と出力引数を囲む必要があります。あなたが提供している2番目のステートメントは、単にthetaの値を表示し、例のためにJ

gradientDescent最初出力を割り当てます:

a = 1 
a, b = rand(10) 

に相当します
a = 1 
a 
b = rand(10) 

関数からの2つの出力引数を使用する場合は、で囲む必要があります。[]が割り当てられ、両方が割り当てられます。

[theta , J] = gradientDescent(X , Y , theta , alpha , iteratons); 
関連する問題