为什么 Octave 会输出 $ g = [... ...] $

Why does Octave output $ g = [... ...] $

当我 运行 此代码(在 Coursera 的编程作业中)时:

J = 1/m * [-y.*log(sigmoid((theta)'*X))-(1-y).*log(1-sigmoid((theta)'*X))]

其中m = length(y)y是m维向量,X是m*2矩阵,theta = 0.1,Octave输出:

g =

   [long (#rows)*2 matrix, each entry <1 but extremely close to 1]

g =

   [another long (#rows)*2 matrix as before]

J = 

   [(#rows)*2 matrix with entries such as 3.4932e-002 and 7.8914e-005]

什么是g?我从来没有定义过它,它也没有出现在我的代码中,却输出了一些看似无关的数字? (我知道函数本身可能有问题,但这与我在这里感兴趣的问题不同。我想如果我知道 g 是什么,我可能能够更好地解决问题。如果你对功能有任何意见,请不要犹豫,指出哪里不对。)

只要你有一个语句(在函数内部或其他地方)没有以分号结束,该语句的输出将显示在终端上。

假设这是您 运行 的唯一代码,那么我的猜测是在您的 sigmoid 函数中有这样一条语句:

g = dosomething()   % note: not semicolon terminated!

在执行期间导致终端输出。

g 在终端中被报告两次这一事实也是有道理的,因为您在刚刚编写的表达式中调用了 sigmoid 函数两次。

此外,为了清楚起见,请不要将您的一行称为 函数 ,因为这在编程上下文中意味着完全不同的东西。