运行 带有 Web 服务器输入的 MATLAB 程序

Run MATLAB program with Web Server inputs

我有一个 MATLAB 应用程序,我想在 linux 框上执行来自 Web 服务器的输入。对服务器的请求将全部来自本地网络。

在搜索不同的解决方案时,我看到了托管 Django 服务器的建议,该服务器提供 HTML 表单,用户可以在其中输入应用程序所需的所有各种数据。当用户填写并提交表单时,数据将通过 API 发送到 MATLAB 应用程序,该应用程序将在网络共享驱动器中提供报告。

这样好用吗?是否有可用的 different/easier 解决方案?

一个更简单的解决方案(如果您现有的 MATLAB 许可证尚未涵盖它可能不是最便宜的)是使用 MATLAB Production Server which basically exists for this category of problem. It has a RESTful API 可以直接处理您的用户输入用例。

需要更多详细信息才能知道这是否“有效”。但是从你提出的大纲来看,似乎是可行的。

当您说“数据将通过 API 发送到 MATLAB 应用程序”时,您的意思到底是什么? API 我们在说什么?什么是“Matlab 应用程序”?你的意思是只在这台服务器机器上安装常规的 Matlab,然后让 Django 或其他网络应用程序服务器 运行 matlab 命令到 运行 一个 Matlab 程序,运行ning作为一个独特的进程(对应于单个 matlab -batch 执行,可能?)服务于那个?这里有两个问题:第一,Matlab 是一个启动时间很慢的大型程序。 Matlab Production Server 和类似的解决方案通过维护 already-running 个“预热”Matlab 工作进程池来处理传入请求。二、许可:“常规”Matlab 许可旨在供人类交互使用; 运行在服务器端使用 Matlab 来处理多人使用的 Web 应用程序的请求可能不包括在内。在执行此操作之前,请咨询您所在组织的律师或 IT 许可专家。

@Will 就在这里:Matlab Production Server 就是MathWorks 为这种场景提供的产品或“解决方案”。而且它相对容易使用。但并不便宜。 (另一方面,当您谈论 Matlab 时,什么是?)

如果有人可以为您做一些系统编程,还有一个更实惠的选择:使用 Matlab 编译器将您的 Matlab 代码构建到“CTF”DLL 中,然后在最重要的是,它可以接受您需要完成的特定 Matlab 事情的服务调用,并将它们分派给您的代码。 (运行 在多个进程池中,如果您希望能够为多个并发客户端提供服务。)针对 Matlab Runtime 运行 的“已编译”Matlab 库不需要任何额外的许可运行执行时间。

这里的大问题是:你想让它快速运行吗?您将拥有多少客户,他们将多久发送一次请求?此 Matlab 代码的输入和输出中将包含何种数据?

查看 matlab 命令的 -batch 选项。查看 Matlab 编译器支持的各种部署选项。并与贵组织的律师交谈。

如果您决定采用 matlab -batch 路线,您可能不想将输入作为 command-line 参数传递给您的 Matlab 代码。命令行和环境变量只传递简单的字符串,解析这些很糟糕,尤其是当你接触到非平凡的数字时。将所有输入打包为 JSON 文件、MAT 文件或类似文件,然后在命令行上仅传递对这些文件(或 SQL blob 或类似文件)的引用。

此外,根据您的 Matlab 代码,GNU Octave (https://gnu.org/software/octave/index) 可能是您的一个选择。 Octave 在功能和稳定性方面落后于 Matlab 很多年,并且没有所有 Matlab 工具箱的等效项,因此一般来说它不是 drop-in 的替代品。但是对于简单的东西,它是有效的。而且它不受许可限制,并且在 command-line 模式下启动时间更快。