dbstack().file
sub
sub.mlx
dbstack().file
运行dbstack()。在实时脚本中文件时,返回了“ liveeditoreValuationHelper(RandomNumbers).m”的文件名。如果sub.mlx是手动运行的,则它将返回与Main.mlx运行时不同的实时编辑器文件名(应该)。当通过main.mlx调用sub.mlx时,返回了两次实时编辑器文件名,这显然是不正确的。 我需要能够从子到主机上获得“ LiveEditoreValuationHelper(RandomNumbers).m”。我有多个下标,并且每次重新启动MATLAB,“ LiveEditoreValuationHelper(RandomNumbers).m”会更改,因此一次运行一次,然后仅将名称保存为变量非常不切实际。使用
f = matlab.desktop.editor.getActiveFilename
也不起作用,因为“活动文件”是main.mlx。我假设仅将sub.mlx通过main.mlx调用sub.mlx不会激活脚本,因此在dbstack struct上没有添加它,但是我似乎找不到解决此问题的方法。我似乎到处都是,找不到答案。如果解决方案明显明显,我会事先表示歉意。感谢您的帮助!
您在每个脚本中都可能具有辅助功能,这些功能返回您想要的任何内容
main.mlx:
disp( thisFileName() )
sub
function fn = thisFileName()
fn = 'main';
end
disp( thisFileName() )
function fn = thisFileName()
fn = 'sub';
end
bausthisFileName
mlx
中的版本优先于sub
中的版本)。这可以与main
输出:
实际上,您将local函数命名
mfilename
,它也会遮蔽内置功能,警惕您就无法在不使用
mfilename
的情况下调用本机版本。