如何通过另一个实时脚本从实时脚本中获取“实时编辑器评估助手”。 我正在运行两个实时脚本,让我们称它们为main.mlx和sub.mlx。以下是MWES。 main.mlx: dbstack()。文件 子 sub.mlx dbstack()。文件 运行dbstack()。在实时脚本中文件时,文件

问题描述 投票:0回答:1
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
matlab
1个回答
0
投票

disp( thisFileName() ) function fn = thisFileName() fn = 'sub'; end

bausthisFileName

是每个文件中的一个本地函数,它会在内部调用时阴影其他任何位置的定义(即,
mlx
中的版本优先于

sub中的版本)。这可以与main

为普通脚本工作类似。
输出:


实际上,您将local函数命名
mfilename
,它也会遮蔽内置功能,警惕您就无法在不使用
mfilename

的情况下调用本机版本。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.