How can I get the path of the script or function being executed or model being run from inside the file itself?

 採用された回答

MathWorks Support Team
MathWorks Support Team 2019 年 7 月 26 日
編集済み: MathWorks Support Team 2019 年 7 月 26 日

4 投票

For scripts and functions:
[filepath,~,~] = fileparts(mfilename('fullpath'))
or simply
filepath = fileparts(mfilename('fullpath'))
Note:
-This works with M file scripts and functions during normal execution.
-This will not produce the desired result for MLX live scripts or in "%%" sections of scripts run individually.
-The functions used are not supported for code generation.
For live scripts (or "%%" sections of scripts):
[filepath,~,~] = fileparts(which('your_file_name'))
or simply
filepath = fileparts(which('your_file_name'))
Note:
-This requires manually entering the name of the file into 'your_file_name'.
-The more flexible approach which works for M file scripts and functions using 'mfilename' returns incorrect results for MLX live scripts and "%%" sections of scripts run individually.
-The functions used are not supported for code generation.
For Simulink models:
[path,~,~] = fileparts(which(bdroot))
or simply
path = fileparts(which(bdroot))
Note:
-This can be used in Model Callbacks, Block Callbacks, Mask Initialization, and Mask Icon & Ports.
-Using "gcs" in place of "bdroot" will not give the desired result in some circumstances, for example Block Callbacks inside subsystems.
-The functions used are not supported for code generation.

1 件のコメント

dzid_
dzid_ 2020 年 11 月 25 日
編集済み: dzid_ 2020 年 11 月 25 日
which(bdroot)
Doesn't work if model is not in the path.
Instead, use:
get_param(bdroot, 'FileName');

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange で Simulink Environment Customization についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by