matlab - 从工具箱检测 Matlab 启动

标签 matlab startup toolbox

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

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

每当 Simulink 启动时都会调用一个“sl_customization.m”,即使在路径上找到多个文件也是如此。也许 Matlab 本身也有类似的东西?

编辑

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

仅澄清:我不想以任何方式更改用户的设置。可以通过使用插件来扩展工具箱。在启动过程中,我想检测此类插件,并临时(即仅针对当前 session )在 MATLAB 路径上添加它们的基目录(如果它们有自己的文档可用)。以便可以在帮助中心找到它。

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

最佳答案

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

此文件包含许多在启动时运行的内容,系统管理员应在安装 MATLAB 之前对其进行修改,以实现他们希望所有用户实现的启动选项。实际上是 matlabrc.m 调用用户的 startup.m(如果存在)。输入 doc matlabrc 以了解更多信息,然后输入 edit matlabrc 来阅读您的内容并了解其作用。

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

  1. 许多用户将 MATLAB 安装在他们没有写入权限的位置,这意味着您将无法对其进行修改。
  2. matlabrc 在许多 MATLAB 服务启动之前运行,因此您可能无法执行某些操作。
  3. 如果您需要工具箱可编译,它将无法工作,因为已编译的应用程序的启动方式不同,而没有调用 matlabrc

此外,正如评论中提到的,它很可能会惹恼很多用户,他们不想要您的启动设置,并且发现删除它们并不容易。

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

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

关于matlab - 从工具箱检测 Matlab 启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30646088/

相关文章:

Matlab - 我怎么知道一个变量名是否可以自由使用

matlab - 如何确定 MATLAB 中的磁盘空间

java - 在 Ubuntu Linux 8+ 上作为守护进程简单启动杂项应用程序(基于 Java)

visual-studio - Telerik + Visual Studio 2010 工具箱 = 令人抓狂的问题

MATLAB:不可见图形句柄在 Windows 和 Linux 上的行为不同?

.net - 最小化 asp.net 的启动时间

linux - 如何在 linux 中将 Perl 脚本作为系统守护进程运行?

c# - 在 WPF 应用程序中找不到 Shockwave 播放器对象引用

c# - 工具箱中没有报告项 (VS 2008 SP1)

c - 在 Matlab 中使用 calllib 从 C 头文件获取常量和枚举值