Is it possible to call a subfunction inside a function mscript?

Is it possible to call a subfunction inside a mscript function and get the returned value?
e.g., the content of 'func.m' as below
function b = func(a)
b = subfunc(a) +1;
function c = subfunc(a)
c = a*2;
Can I call subfunc directly in the matlab workspace.

3 件のコメント

Stephen23
Stephen23 2015 年 2 月 16 日
編集済み: Stephen23 2015 年 2 月 16 日
What do you mean by "subfunction" ? Do you mean a "local function" , or something else?
Ray Lee
Ray Lee 2015 年 2 月 17 日
For instance, a function Func is stored in file 'Func.m'. In 'Func.m', there is a function SubFunc called by the main Func function. I wanna if I can excute the SubFunc function in 'Func.m' directly.
Stephen23
Stephen23 2015 年 2 月 18 日
編集済み: Stephen23 2018 年 2 月 17 日
MATLAB does not mention "subfunctions". Other functions in the same Mfile are either local functions or nested functions.
Do not call any function a "script", as a script is something quite different from a function.
"I wanna if I can excute the SubFunc function in 'Func.m' directly": lets look at the two possible cases for this:
  • If Func is the main function on that Mfile, then it can call any local function in the same Mfile.
  • If Func is a script then from version R2016b you can add local functions. With earlier versions doing so will throw an error.

サインインしてコメントする。

 採用された回答

Thorsten
Thorsten 2015 年 2 月 16 日

1 投票

No. You have to create a separate mfile that can be called by your mscript.

その他の回答 (2 件)

Jan
Jan 2017 年 1 月 25 日

9 投票

You can do this by a wrapper:
function Fcn = main
Fcn.func = @func;
Fcn.subfunc = @subfunc;
function b = func(a)
b = subfunc(a) +1;
function c = subfunc(a)
c = a*2;
Now you can call from the outside:
Fcn = main();
Fcn.func(1)
Fcn.subfunc(2)
Adam
Adam 2015 年 2 月 16 日
編集済み: Adam 2015 年 2 月 18 日

1 投票

You can call a sub-function from a main function in an m-file.
You cannot call a sub-function from a script (what would the function be 'sub' of?!). If you need to then just turn your script into a function.
Edit: In response to your edited question, then Yes, what you are doing is creating a function file and then within it defining subfunctions which are only accessible to the main function of that file.
This does seem like a question that you could have got the answer to yourself instantly though by simply putting that code in a file and running it!

1 件のコメント

Ray Lee
Ray Lee 2015 年 2 月 20 日
Of course I know it is impossible to call the local function by excuting subfunc() from outside.
I'm asking if there is a way to call a local function from outside.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeDebugging and Analysis についてさらに検索

質問済み:

2015 年 2 月 16 日

編集済み:

2018 年 2 月 17 日

Community Treasure Hunt

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

Start Hunting!

Translated by