gpt4 book ai didi

matlab - 从定义它的文件中分离匿名函数

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:05 24 4
gpt4 key购买 nike

我正在寻找解决以下问题的方法:

  • 创建一个脚本 foo.m 包含 fun = @(x)(x*x)
  • 运行 foo。这将创建变量 fun
  • 删除foo.m
  • 尝试运行 fun(2)

在最新版本的 MATLAB 中(我使用的是 R2019b)这会导致错误:

Previously accessible file "foo.m" is now inaccessible.

不知何故,匿名函数绑定(bind)到定义它的文件。

是否有可能以某种方式“分离”它,以便即使在文件被删除后它仍能继续工作?


对于那些好奇我为什么需要这个的人,这是为了 fixing MATLink,Mathematica/MATLAB 接口(interface),用于最新版本的 MATLAB。

最佳答案

您可以使用 func2strstr2func构造一个可以工作的新函数句柄:

more_fun = str2func(func2str(fun));
more_fun(2)

请注意,此后fun仍然无法找到,但您也可以直接将其赋值给fun,使其再次可访问。

编辑:刚刚发现一个(已记录的)限制:如果匿名函数使用外部变量,则此方法将不起作用,因为

Function handles created using str2func do not have access to variables outside of their local workspace or to nested functions. If your function handle contains these variables or functions, MATLAB® throws an error when you invoke the handle.

关于matlab - 从定义它的文件中分离匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58259672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com