matlab - Octave 中的函数句柄格式

标签 matlab octave function-handle

Octave 中定义了一个函数句柄,如下例所示。

f = @sin;

从现在开始,调用函数f(x)与调用sin(x)效果相同。到目前为止,一切都很好。我的问题始于我的一项编程作业中的以下函数。

function sim = gaussianKernel(x1, x2, sigma)

上面的行表示函数 gaussianKernel 的标题。这需要三个变量作为输入。但是,下面的调用让我很困惑,因为它只传递了两个变量,然后在引用 gaussianKernel 时传递了三个变量。

model = svmTrain(X, y, C, @(x1, x2) gaussianKernel(x1, x2, sigma));

不应该是 model = svmTrain(X, y, C, @gaussianKernel(x1, x2, sigma)); 吗?有什么区别?

最佳答案

你没有提供周围的代码,但我的猜测是变量 sigma 在调用 model = svmTrain(X, y, C, @(x1 , x2) gaussianKernel(x1, x2, sigma));.这是一个 parametrized anonymous function 的例子捕获当前范围内变量的值。这也称为 closure .看起来 Matlab 有 better documentation对于这个非常有用的编程模式。

函数句柄@gaussianKernel(x1, x2, sigma) 等同于@gaussianKernel。如果需要 svmTrain 的第四个参数,则使用 model = svmTrain(X, y, C, @gaussianKernel(x1, x2, sigma)); 在这种情况下可能不起作用成为具有两个输入参数的函数。

关于matlab - Octave 中的函数句柄格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45887813/

相关文章:

python - R - 通过删除 x、y 和 z 维度的全零二维矩阵来调整 3D 数组的大小

matlab - 如何使 cumsum 这个矩阵

octave - 无法在 Octave 中安装包 optim

MATLAB-将函数句柄参数作为句柄传递给另一个函数

python - Matlab 到 Python 矩阵代码

matlab - 在 Matlab/Octave 中调用函数和脚本

octave - 将元胞数组导出到多列 csv 文件

matlab - 单一回归与全部回归中函数句柄的混淆

matlab - 元胞数组和函数句柄

java - Matlab-Java MD5 给出错误的哈希值