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歳で、説明がありません。

詳細な説明:

私はWindows864ビットでMATLAB2012bを実行しています。ソースファイルは元々64ビットLinuxで書かれていました。

関連性はないと思いますが、myAnonymousFunctionはmyClassの関数のパラメーターであり、セル配列内に格納されます。つまり、次のようになります。file 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を再起動することでもありました。Windows2008ServerでMatlab2012b64ビットを実行していました。

于 2013-11-26T20:40:40.233 に答える