Octave中的“下标索引”错误,但没有使用下标?

时间:2014-02-08 04:58:34

标签: matlab octave

我试图使用Octave计算函数导数的数值,但我不断收到此错误:

  

错误:fp:下标索引必须是正整数或逻辑

这个错误很奇怪,因为我在代码中的任何地方都没有使用下标索引。以下是抛出错误的函数fp

function [ dy ] = fp(f, x, ep)  
    dy = (f(x .+ ep) .- f(x)) ./ ep;  
end

当我从Octave解释器运行它时,该函数有效,但是当我尝试使用文件fp.m调用该函数时,我得到了上述错误。这是我传递给它的功能:

function [ y ] = f(x)
    y = (x .+ 2) .* x .+ 1;
end

我已经尝试重命名fp中的所有变量,因为我偶然发现了一个保留变量名称。还有其他想法吗?

1 个答案:

答案 0 :(得分:1)

Octave具有类似于C中的函数指针,除了它们被称为函数句柄。以下是调用文件版本的方法:

fp(@f, -5, 1.0e-15);

如果你传入"f",它只是一个字符数组。在这种情况下,f(...)内的表达式fp被解释为char数组的索引表达式,因为fp没有看到函数句柄。如果你传入@f,那就是指向fp可以直接调用的函数的指针。