【发布时间】:2010-06-23 08:58:40
【问题描述】:
我正在使用我的笔记本电脑运行 MATLAB,它非常方便但速度很慢。 我们有运行 MATLAB 的强大服务器,但我在笔记本电脑上运行带有 UI 的应用程序更方便(而不是通过命令行运行 Matlab)。
是否可以在 Windows 上使用 UI 在本地运行 matlab,只是代码在远程服务器上运行(因此更快)?
谢谢!
【问题讨论】:
标签: matlab remote-access
我正在使用我的笔记本电脑运行 MATLAB,它非常方便但速度很慢。 我们有运行 MATLAB 的强大服务器,但我在笔记本电脑上运行带有 UI 的应用程序更方便(而不是通过命令行运行 Matlab)。
是否可以在 Windows 上使用 UI 在本地运行 matlab,只是代码在远程服务器上运行(因此更快)?
谢谢!
【问题讨论】:
标签: matlab remote-access
我想到了几个选项,但并非所有选项都能准确回答您提出的问题。鉴于您的笔记本电脑是 Windows,您可以执行以下操作之一:
matlabpool。选项 (1) 和 (2) 基本上意味着您正在通过网络将 MATLAB UI 传输到您的笔记本电脑。选项 (3) 与您最初要求的最相似,但 matlabpool 仅在服务器上运行 PARFOR 和 SPMD 块的主体。
【讨论】:
在没有 GUI 的情况下在服务器上启动 MATLAB 的详细内容见 http://blogs.mathworks.com/desktop/2010/02/22/launching-matlab-without-the-desktop/ 您还应该阅读那里的用户 cmets/discussion
例如你可以使用
启动 matlab -nosplash -nodesktop -nojvm -minimize -r “测试命令,退出”
如果不使用 Java 对您的需求过于严格:
关于“-nodesktop”与“-nojvm”,还有第三种 (未记录/不支持)选项:“-noawt”。 -noawt 加载 Java(因此 启用 Java I/O、数据结构等)并阻止 Java GUI
那里的讨论还谈到使用未记录的 com.mathworks.mde.desk.MLDesktop.getInstance.getMainFrame.hide 来隐藏命令行窗口,但该命令似乎没有工作
顺便说一句,您可以作为 COM 自动化服务器启动,而不是通过 Windows shell 命令启动 MATLAB:
http://www.mathworks.com/help/techdoc/matlab_external/brd0v3w.html
或通过现有的 C API 来启动 MATLAB:
http://www.mathworks.com/help/techdoc/matlab_external/f29148.html
如果您经常使用它(例如,通过 Web 服务),最好始终将 MATLAB 实例保存在内存中(例如,因为 Windows 应用程序共享代码并拥有单独的数据,这可以节省大量时间,避免在每次脚本运行时将 MATLAB 代码重新加载到内存中)。该实例也可能是无头的(没有 UI)在服务器启动时使用此命令(例如,通过使用“regedit.exe”在 Windows 注册表中的 HKLM/Software/Microsoft/Windows/CurrentVersion/Run 中添加一个条目):
启动 matlab -nosplash -nodesktop -nojvm -minimize
【讨论】: