MATLAB(R2016a)。这两个陈述有何不同?

时间:2017-02-06 13:34:21

标签: matlab

[theta , J] = gradientDescent(X , Y , theta , alpha , iteratons);
theta , J = gradientDescent(X , Y , theta , alpha , iterations);

运行上述两个陈述给了我不同的结果。第一个给了我想要的,但第二个没有。为什么呢?

修改

这是函数的声明:

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

1 个答案:

答案 0 :(得分:3)

要从函数指定多个输出,必须用[]括起输出参数。您提供的第二个语句只会显示theta的值,并将gradientDescent第一个输出分配给J

为了举个例子:

a = 1
a, b = rand(10)

相当于

a = 1
a
b = rand(10)

如果你想要一个函数的两个输出参数,你必须将它们包含在[]中,以便它们都被分配。

[theta , J] = gradientDescent(X , Y , theta , alpha , iteratons);