error: 'y' undefined near line 8 column 12 error: called from computeCost at line 8 column 3
这是我的代码:
1;
function J = computeCost(X, y, theta)
%COMPUTECOST Compute cost for linear regression
% J = COMPUTECOST(X, y, theta) computes the cost of using theta as the
% parameter for linear regression to fit the data points in X and y
% Initialize some useful values
m = length(y); % number of training examples
% You need to return the following variables correctly
J = 0;
% ====================== YOUR CODE HERE ======================
% Instructions: Compute the cost of a particular choice of theta
% You should set J to the cost.
J = sum(( X * theta - y ) .^2 )/( 2 * m );
% =========================================================================
end
答案 0 :(得分:1)
我猜这是Coursera ML课程分配中的错误。我认为您正在尝试运行包含函数computeCost(X,y,theta)的实现的文件,而不是调用具有X,y,theta值的computeCost(,,)函数的文件。这就是为什么在不提供y时出现错误的原因。
运行正在调用computeCost()函数的文件,而不是运行包含computeCost()函数的实现的文件。
即: 对于Week2作业1:运行ex1.m文件 对于Week3作业2:运行ex2.m文件
答案 1 :(得分:0)
这里发生了两件事。首先,您要动态定义函数,而不是在其自己的文件中定义;不确定为什么会喜欢。
第二,在定义此computeCost
函数之后,您是在没有传递y
自变量(或者大概没有传递 any )的上下文中调用它的em>的参数,而y
恰好是该函数中第一个被检测为缺少的参数。
由于这是一个成本函数,并且您的代码看起来像来自Andrewra Ng在Coursera上的机器学习课程中的代码,因此,我在这里走了个弯路,猜想您是从其他地方调用computeCost
应该将其用作要优化的成本函数,例如fminunc
。通常,像fminunc
这样的函数都希望使用 函数句柄 作为参数,但是它们也希望使用非常特定的函数句柄。如果您查看help
中的fminunc
,它会指出:
FCN应该接受定义未知变量的向量(数组),
并返回目标函数值(可选使用梯度)。
因此,如果要传递要使用三个参数计算的函数,则需要将其“包装”到您自己的句柄中,您可以在其中定义该句柄,例如@(x) computeCost(x, y, t)
(假设“ y”和“ t”已经存在)。
所以,我猜测不是像这样调用fminunc:fminunc( @(x) computeCost(x, y, t)
,
您可能这样称呼它:fminunc( @computeCost )
甚至是这样:fminunc( computeCost )
(它首先评估函数,而不是传递函数句柄作为参数)。
基本上,请返回到Coursera给您的代码,或者仔细阅读说明。您称呼错误的方式。
答案 2 :(得分:-1)
实际上,您正在尝试运行一个函数,只有提供所需的编号后才能运行它。参数。这样做,您可能会遇到以下错误:
computeCost
错误:“y
”在第7行第12列附近未定义
错误:从computeCost
在第7行第3列调用
如您所见,这里我在不传递任何参数的情况下调用此函数。
解决方案:
您可以通过运行“ ex1
”脚本来测试代码。之后,通过调用“ submit
”脚本提交您的作品。