从工具箱中检测Matlab启动

从工具箱中检测Matlab启动,matlab,startup,toolbox,Matlab,Startup,Toolbox,我正在编写一个Matlab工具箱,我想在Matlab启动时进行一些初始化。当工具箱目录位于Matlab路径上时,在启动阶段是否调用了任何脚本或函数 我知道有一个“startup.m”,但这是特定于用户的。如果用户在MATLAB路径上的“startup.m”高于工具箱,则不会调用它 有一个“sl_customization.m”,它在Simulink启动时被调用,即使路径上有多个文件。也许Matlab本身也有类似的东西 编辑 也许现在做这个还为时过早。但从你的回答和评论中我看到,似乎没有默认内置的

我正在编写一个Matlab工具箱,我想在Matlab启动时进行一些初始化。当工具箱目录位于Matlab路径上时,在启动阶段是否调用了任何脚本或函数

我知道有一个“startup.m”,但这是特定于用户的。如果用户在MATLAB路径上的“startup.m”高于工具箱,则不会调用它

有一个“sl_customization.m”,它在Simulink启动时被调用,即使路径上有多个文件。也许Matlab本身也有类似的东西

编辑

也许现在做这个还为时过早。但从你的回答和评论中我看到,似乎没有默认内置的机制

只是澄清一下:我不想以任何方式更改用户的设置。工具箱可以通过使用插件进行扩展。在启动期间,我想检测这些插件,并临时(即仅针对当前会话)将它们的基本目录添加到MATLAB路径上(如果它们有自己的文档可用)。这样就可以在帮助中心找到它


更改matlabrc是否有意义,使Matlab路径上的所有“startup.m”文件一个接一个地执行(最好从路径上最低的文件执行到最高的文件,以便最高的文件能够覆盖其他文件的设置)?然后,我可以将工具箱附带一个“startup.m”,在启动时执行,即使工具箱被删除(并且没有正确卸载),它也不会损害Matlab环境,因为默认情况下只有一个启动文件。还是会走得太远?这种方法有什么我没有想到的问题吗?

当MATLAB启动时,它运行
matlabrc.m
,它不是特定于用户的,存储在
\toolbox\local
文件夹中

该文件包含许多在启动时运行的内容,其目的是让系统管理员在安装MATLAB之前对其进行修改,以实现他们希望所有用户实现的启动选项。实际上是
matlabrc.m
调用用户的
startup.m
,如果它存在的话。键入
doc matlabrc
以了解更多信息,键入
edit matlabrc
以阅读您的文档并查看其功能

所以理论上你可以修改它。但是,这方面存在一些问题:

  • 许多用户将MATLAB安装在他们没有写访问权限的位置,这意味着您将无法修改它
  • matlabrc
    在许多MATLAB服务启动之前运行,因此您可能不想做的一些事情
  • 如果您需要工具箱是可编译的,那么它将无法工作,因为对于已编译的应用程序,启动的方式不同,而不调用
    matlabrc
  • 此外,正如在评论中提到的,它很可能会惹恼很多用户,他们不想要你的启动设置,也不容易删除它们

    我建议您创建一个脚本(比如
    mytoolboxstartup.m
    ),然后作为安装过程的一部分,为用户提供一个桌面快捷方式(或类似的方式),该快捷方式将运行
    matlab-r mytoolboxstartup.m


    通过这种方式,用户可以选择启动一个常规的MATLAB,或者按照您为工具箱推荐的方式设置的MATLAB。此外,如果用户希望编写自己的函数调用您的工具箱,他们可以直接为自己调用
    mytoolboxstartup

    这不是很优雅,但作为“安装”过程的一部分,您可以将对startup.m底部的调用添加到您自己的初始化脚本中。您添加到启动中的代码可能会检测到工具箱的存在,并且仅当工具箱位于您要查找的路径上(例如,如果用户已“安装”)时才会运行?请不要这样做,我不希望工具箱干扰我的启动设置。