I am wondered how can I add nested functions in a parent function in a while loop. Is that possible?
At the moment, the script file works with calling functions, but I need to compile the script code. Any idea?

 채택된 답변

Walter Roberson
Walter Roberson 2019년 6월 20일

0 개 추천

"I am wondered how can I add nested functions in a parent function in a while loop. Is that possible?"
No. functions cannot be defined inside of control structures.
"At the moment, the script file works with calling functions, but I need to compile the script code."
Add a function header at the top of the file, and add an "end" statement before the first "function" that you have defined in the file.

댓글 수: 2

sadi tavakoli
sadi tavakoli 2019년 6월 20일
Thanks for the comment.
So, there is no way to compile my code in MATLAB!
What about Simulink? Does not it help for compiling such a functions in function code?
No, as Walter said there is no way to define a nested function inside a while loop.
Why do you believe you need to do that? Why do you believe nesting the function before or after the while loop is not an option? If you're trying to use the nested function inside the loop and believe that means you need to define it inside the loop, that's not the case. Yes, I know this is one of the least efficient ways to create this vector, but it was quick to write.
function x = nestedFunctionExample
n = 10;
x = [];
while n > 0
callNestedFunction;
end
function callNestedFunction
x = [x n];
n = n-1;
end
end
This same example would have worked identically if I had defined it:
function x = nestedFunctionExample
n = 10;
x = [];
function callNestedFunction
x = [x n];
n = n-1;
end
while n > 0
callNestedFunction;
end
end
What you can't do is this:
function x = nestedFunctionBADExample
n = 10;
x = [];
while n > 0
function callNestedFunction
x = [x n];
n = n-1;
end
callNestedFunction;
end
end

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

추가 답변 (1개)

sadi tavakoli
sadi tavakoli 2019년 6월 25일

0 개 추천

Thanks Steven and Walter. It works now properly.
In addition, I also stucked in the next step when I am trying to compile my function to a .dll file. This function(s) loads a thermodynamic file from Cantera (*.cti), and a command named 'Solution':
gas = Solution('filename.cti);
Running the function gives the results without any error, but in compiling, I encounter this error: 'No class Solution '
Does it mean MATLAB does not support Cantera in the compiling process?

댓글 수: 1

Walter Roberson
Walter Roberson 2019년 6월 26일
It sounds as if for some reason Solution.m or the @Solution directory is not being added to the project files.

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

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

질문:

2019년 6월 20일

댓글:

2019년 6월 26일

Community Treasure Hunt

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

Start Hunting!

Translated by