problem with anonymous function in executable

조회 수: 1 (최근 30일)
Emre Kocatulum
Emre Kocatulum 2015년 7월 16일
댓글: Muthu Annamalai 2015년 7월 17일
I have a three files that work perfectly. However when I compile them matlab behaves as if I didn't include one of the files even though it is included in the deployment.
function testMain
kuzu = zeros(5,1);
anonymousFunction = testClass.anonymousFunction;
kuzu2 = anonymousFunction(kuzu)
end
classdef testClass
properties (Constant)
anonymousFunction = @(x) replaceZeroWithNaN2(x)
end
end
function output = replaceZeroWithNaN2(input)
input(input==0) = NaN;
output = input;
end
All the files are in the same directory. After compilation I get the following error:
Undefined function 'replaceZeroWithNaN2' for input arguments of type 'double'

채택된 답변

Muthu Annamalai
Muthu Annamalai 2015년 7월 16일
While I don't have a explanation of why you are seeing this error, I have a suggestion to rewrite your code.
Generally function handles are useful in context of algorithms | | , i.e. sort algorithm needs a comparator etc, integration algorithm needs a value of function at a point (x,y) etc.
For all other purposes I recommend using static methods : see examples of static methods .
Can you rewrite your code to make ' replaceZeroWithNaN2 ' a static method of class ' testClass ' and see what happens? I assume the codegenerator will have a easier time resolving that symbol.
Goodluck.
  댓글 수: 2
Emre Kocatulum
Emre Kocatulum 2015년 7월 17일
Using static methods seem to work. So is there some instability in the way code generator handles anonymous functions?
Muthu Annamalai
Muthu Annamalai 2015년 7월 17일
Glad to know this worked for you Emre.
I encourage you to still file a customer report with Mathworks technical support.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Java Package Integration에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by