"下标索引必须是实数正整数或逻辑。"

时间:2015-11-14 15:18:19

标签: matlab

我正在创建一个MATLAB代码来使用前向差异来估计雅可比矩阵。这是代码:

%Calculate Jacobian Numerically using forward differences:
function J=Jacobianest(x,F) % X is a column vector of variables, f is a   column function vector
h=1e-7;
n=length(x);
J=zeros(n);
for i=1:n
    xp=x;
    xp(i)=x(i)+h;
    J(:,i)=1/h*(F(xp)-F(x));
end

运行时出现以下错误:

Jacobianest(x,'multivariable_newton_fun')
Subscript indices must either be real positive integers or logicals.

Error in Jacobianest (line 9)
J(:,i)=1/h*(F(xp)-F(x));

我查看其他问题以获得答案并尝试调试/ dbstop,但我似乎无法找到任何明显的问题。

我使用i作为列索引,它应该只有1n的整数值(希望所有整数都是。)

1 个答案:

答案 0 :(得分:1)

您需要传递函数而不是字符串。 怎么样:

-2146233079 & 0xFFFF = 5385

如果它是一个字符串,即你使用单引号,那么Jacobianest(x,@multivariable_newton_fun) 会给出字符串的第一个字母,在本例中为' m'。 此外,如果您尝试F(1),您将收到上述错误。

F(0)生成一个函数(在其他语言中考虑函数句柄或函数引用)。然后括号@被解释为函数调用,而不是下标索引。