5

运行脚本时出现一个奇怪的错误:

Unable to find function @(x) exp(x) within H:\blabla\myClass.m.

当我调试时,我得到:

34  b=myAnonymousFunction(a)
K>> myAnonymousFunction(3)
Unable to find function @() exp(x) within HH:\blabla\myClass.m.
K>> class(myAnonymousFunction)
ans =
function_handle

我试图制作的一个最小的例子工作得很好。

你有什么想法错误来自哪里以及它意味着什么?因为他显然可以找到精神错乱的定义……啊……myAnonymousFunction。这只是一个错误吗?我在 matlabcentral 上读过一些东西,但它已经 7 岁了,没有给出解释。

进一步说明:

我在 Windows 8 64 位下运行 MATLAB 2012 b。源文件最初是在 64 位 Linux 下编写的。

我认为这无关紧要,但 myAnonymousFunction 是 myClass 中函数的参数并存储在单元格数组中。所以它是这样的:文件 myClass.m:

classdef myclass < handle
  properties
    x=1337;
    myAnonymousFunctions;
  end
  methods
   function new = myClass(myAnonymousFunctions)
     new.myAnonymousFunction=myAnonymousFunction
   end
   function show(o)
     disp(myAnonymousFunction{1}(o.x));
   end
  end
end

并被称为

myMyclass = myClass({@(x)exp(x)})
myMyClass.f();
4

2 回答 2

6

可能的解决方法:重新启动 Matlab

重新启动 MATLAB 后,问题没有发生......到目前为止。

我猜有问题的 ML 调试器有问题。

于 2013-03-24T19:14:26.537 回答
0

在类中使用匿名函数时,我也收到了同样的错误。该函数存储为 Matlab 类中的一个字段,如下所示:

dataBlockObj.processStream(dataBlockObj.activeProcessStreamIndex).func=@(x) x;

我一直在调试代码,但是当我在没有设置任何断点的命令行上运行代码时发生了错误。我的解决方案也是重新启动 Matlab。我在 Windows 2008 服务器上运行 Matlab 2012b 64 位。

于 2013-11-26T20:40:40.233 回答