此函数返回错误没有足够的输入参数。
previous_date.Stub(x => x.Value).Return("20160525");
当我按照以下方式通过J和theta时:
function numgrad = computeNumericalGradient(J, theta)
SIZE=length(theta);
numgrad = zeros(SIZE,1);
perturb = zeros(SIZE,1);
e = 1e-4;
for p = 1:SIZE
% Set perturbation vector
perturb(p) = e;
loss1 = J(theta - perturb);
loss2 = J(theta + perturb);
% Compute Numerical Gradient
numgrad(p) = (loss2 - loss1) / (2*e);
perturb(p) = 0;
end
end
function db = f(X)
db=X'*X;
end
但是这个脚本运行正常。
theta=[1; 2; 3];
这就是我调用我的功能的方式。
theta=[1; 2; 3];
SIZE=length(theta);
numgrad = zeros(SIZE,1);
perturb = zeros(SIZE,1);
e = 1e-4;
for p = 1:SIZE
% Set perturbation vector
perturb(p) = e;
loss1 = f(theta - perturb);
loss2 = f(theta + perturb);
% Compute Numerical Gradient
numgrad(p) = (loss2 - loss1) / (2*e);
perturb(p) = 0;
end
我不明白脚本是如何工作的,因为脚本和函数的唯一区别是函数及其参数在脚本中不是任意的。
PS:我正在使用MATLAB 2014