How to get the file path inside a script, function, or model?

227 次查看(过去 30 天)
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
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 个)

类别

Help CenterFile Exchange 中查找有关 Programmatic Model Editing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by