matlab怎么能找不到匿名函数?

时间:2013-03-24 16:46:29

标签: matlab

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

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。这只是一个错误吗?我读了something on 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();

2 个答案:

答案 0 :(得分:5)

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

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

我猜错误的ML调试器是错误的。

答案 1 :(得分:0)

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

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

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