2013-03-24 75 views
3

我跑我的腳本時得到一個奇怪的錯誤: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 

我嘗試小例子,以生產工作的罰款。

你有什麼想法,錯誤來自哪裏? 因爲他明顯可以找到瘋狂的定義...... ahh ... 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(); 
+1

什麼是myAnnonymousFunction?它是'myClass.m'中實現的主類嗎?如果是這樣,爲什麼不是該文件也稱爲「myAnnonymousFunction.m」?如果不是,你可以解釋一下關於類/函數層次結構嗎? – 2013-03-24 17:18:03

+0

myAnnonymousFunction是一個包含匿名函數的變量 – 2013-03-24 19:12:15

回答

4

可能的解決方法:重啓Matlab的

重新啓動MATLAB後,問題沒有發生......迄今爲止。

我猜測越野車ML調試器是越野車。

0

在課堂中使用匿名函數時,我也收到了同樣的錯誤。該函數作爲一個字段存儲在Matlab類中,如下所示:

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

我一直在調試代碼,但是當我在命令行上運行代碼而沒有設置任何斷點時發生錯誤。對我來說,解決方案也是重新啓動Matlab。我在Windows 2008 Server上運行Matlab 2012b 64位。

+0

所以它很可能是一個bug ...感謝分享 – 2013-11-27 12:30:37