问题标签 [function-handle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
392 浏览

file - Matlab:将函数句柄矩阵保存到文本文件

例如我的数据是:

我想保存data到文本文件或其他文件。(data是一个cell矩阵)。我怎样才能做到这一点?

0 投票
0 回答
56 浏览

matlab - 函数处理程序

我在 matlab 上使用了两个不同的函数:function1 和 function2(每个都用不同的脚本编写)。

在function1的脚本中,我有类似的东西:

在function2的脚本中,我有:

我发现我在function2中有问题,因为每当我尝试显示p(在script1中定义的函数do_this的结果)时,我得到的值是NaN。

我看不出问题出在哪里?我是否以不正确的方式使用函数处理程序?

谢谢你的帮助

0 投票
1 回答
1651 浏览

matlab - Matlab - 检查函数句柄是否是特定函数或函数类型

问题:在 Matlab 中,如何检查函数句柄是否为特定函数或函数类型?

示例:f1为函数句柄。如何检查是否f1是内置的 Matlab 函数mean?如何检查是否f1是匿名函数?

我目前的解决方案:我目前对这个问题的解决方案是调用functions函数。functions接受一个函数句柄作为输入并返回一个包含有关输入函数句柄信息的结构,例如函数类型、路径、函数名等。它可以工作,但它不是一个理想的解决方案,因为引用官方文档

“注意 MATLAB® 提供的functions功能仅用于查询和调试目的。因为它的行为可能会在后续版本中发生变化,所以您不应依赖它来进行编程。”

0 投票
2 回答
714 浏览

built-in - 如何获取覆盖的内置函数的句​​柄?

在我的 Matlab 路径上有一个自定义zeros函数。我想将内置句柄存储zeros在变量中。我怎样才能做到这一点?

想过@(varargin)builtin('zeros',varargin{:}),但是由于字符串比较,这可能会减慢操作速度。

另外,我注意到可以引用diagas @numel\diag,但这似乎不适用于其他内置函数(zeros特别是)。

0 投票
2 回答
2315 浏览

matlab - 将函数句柄的单元格数组转换为函数句柄的单个数组

我需要建立一个非线性方程向量fsolve来解决它。但是我应该在每次循环迭代中制作向量的每个元素。我怎样才能组成这样的向量?事实上,我不能使用单元格数组。如何将单元格数组{@(x) x(1)+x(2)^2; @(x) x(1)-2*(x(2))}转换为数组@(x) [ x(1)+x(2)^2 ; x(1)-2*(x(2))]?因为我想用fsolve非线性方程组来求解。

0 投票
1 回答
2718 浏览

matlab - 元胞数组和函数句柄

看下面的代码:

我想在 F 中存储类似F={@(x) x(1)+x(2);@(x) x(1)-x(2)+2;}. 我应该如何编辑我的代码来实现这一点?谁能帮我?

0 投票
2 回答
912 浏览

matlab - 函数句柄的 Array Cell 的矩阵乘法

我已经建立了一个function_ handles如下的单元格数组:

假设A = [1 2; 3 4]。我需要执行矩阵乘法,就像A*B有一个单元格数组一样

我怎样才能做到这一点?

0 投票
3 回答
6222 浏览

c++ - 带有 mexCallMATLAB 的 Matlab mex 文件几乎比相应的 m 文件慢 300 倍

我开始在 C++ 中实现一些 m 文件以减少运行时间。m 文件生成 n 维点并评估这些点的函数值。这些函数是用户定义的,它们作为函数句柄传递给 m 文件和 mex 文件。mex 文件使用 mexCallMATLAB 和 feval 来查找函数值。

我构造了下面的示例,其中将在 Matlab 命令行中构造的函数句柄 fn 传递给 matlabcallingmatlab.m 和 mexcallingmatlab.cpp 例程。使用新打开的 Matlab,mexcallingmatlab 在 241.5 秒内评估此函数 200000,而 matlabcallingmatlab 在 0.81522 秒内评估它,因此使用 mex 实现慢了 296 倍。这些时间是第二次运行的结果,因为第一次运行似乎更大,可能是由于第一次加载程序等相关的一些开销。

我花了很多天在网上搜索这个问题并尝试了一些建议。我尝试了不同的 mex 编译标志来优化 mex,但性能几乎没有差异。Stackoverflow 上的一篇文章指出升级 Matlab 是解决方案,但我在 Mac OS X 版本:10.8.4 上使用的可能是最新版本的 MATLAB 版本:8.1.0.604 (R2013a)。我确实编译了带有和不带有 –largeArrayDims 标志的 mex 文件,但这也没有任何区别。有人建议函数句柄的内容可以直接编码在 cpp 文件中,但这是不可能的,因为我想将此代码提供给任何具有向量输入和实数输出的任何类型函数的用户。

据我所知,mex 文件需要通过 feval 函数才能使用函数句柄,而 m-files 可以直接调用函数句柄,前提是 Matlab 版本比某些版本更新。

任何帮助将不胜感激。

在 Matlab 命令行中创建的简单函数句柄

matlabcallingmatlab.m

mexcallingmatlab.cpp

mex文件的编译

0 投票
2 回答
78 浏览

matlab - Matlab,函数句柄自动使用参数

您好我有一个关于如何在 Matlab 中实现以下行为的问题。

有没有人有任何想法如何实现这一目标。我知道我可以将 A.sin 定义为@(x) sin(x)然后提供 Ax ,但宁愿找到替代方案。

谢谢。

0 投票
2 回答
1500 浏览

matlab - 如何验证函数句柄作为输入参数?

我有一个类,它有一个函数句柄作为其properties.

我想确保输入参数hfun是一个具有 1 个输入和 1 个输出的函数句柄,否则它应该会出错。如果我可以更具体,我希望这个函数将 Nx3 数组作为输入参数并返回 Nx3 数组作为输出参数。

上面的代码适用于内置函数,f = @sqrt但如果我尝试放入匿名函数f = @(x) x^(0.5)nargout(hfun)则为 -1,因为它将匿名函数视为[varargout] = f(x). 此外,如果您将句柄输入到类方法中,例如f = @obj.methodFun,它会将函数转换为对和[varargout] = f(varargin)都返回 -1的形式。narginnargout

有没有人想出一种方便的方法来验证函数句柄作为输入参数?与它来自哪种函数句柄无关?