如何在VSCode中运行MATLAB(.m)文件?

11

我无法弄清如何在VSCode中运行MATLAB (.m)代码。

我已安装MATLAB Extension for VSCode并按照扩展中的说明添加了MATLAB的mlint文件路径。

"matlab.mlintpath"

VSCode将该文件识别为MATLAB文件。然而,代码无法运行。

我如何在VSCode中运行MATLAB代码?


你的意思是“运行”,就是执行代码吗?由于MATLAB是专有软件,运行MATLAB代码只有两种方法:使用有效许可证从MATLAB IDE运行代码或者使用MATLAB编译器将其编译为可执行文件。 - Adriaan
是的,我的意思是要执行代码。那么有没有办法直接从 VSCode 命令提示符中执行代码? - Mihir
只要您的计算机上安装有MATLAB并且可以从命令行调用它,或者使用我答案中提到的其中一种解决方法,那么您就可以运行代码。如果没有有效许可证和可用的MATLAB安装,则无法运行代码,这是出于设计考虑。 - Adriaan
在Windows上,您无法在终端内启动Matlab会话,总会弹出一个交互式的Matlab控制台(例如matlab -nodesktop -nosplash <fileToRun.m>)。我编写了一份指南,允许您从vscode中执行正在运行的Matlab IDE中的部分/行/完整文件,链接。这有点hacky,但使我能够享受vscode的多行编辑,然后通过按键快捷方式快速运行代码部分,而不是切换到Matlab并运行整个文件。 - rinkert
8个回答

8
截至2023年4月,以下内容不再是在VSCode中运行MATLAB的唯一方式。请参阅svenmk的答案以了解The MathWorks自己的插件

有一种方法,这个VSCode扩展建议您可以使用它在VSCode中运行MATLAB代码,而无需打开MATLAB GUI。不过,这并不否定以下内容;您需要拥有一个可工作且已授权的MATLAB安装,它将在后台调用。如果没有可工作且已授权的MATLAB安装,您将无法运行MATLAB代码。


作为MATLAB是专有软件,运行MATLAB代码只有两种方式:通过在MATLAB IDE中运行代码(当然需要有效的许可证),或者通过使用MATLAB编译器将其编译为可执行文件。
你可以尝试通过导入mlint功能来使其他IDE具有类似MATLAB自带IDE的语法高亮和输入提示,就像你所做的那样,但它不会执行代码。

因此,不,你不能直接在VSCode中执行MATLAB代码,你只能在VSCode内部隐藏地调用MATLAB引擎。


一个可能的解决方法是使用MATLAB Coder将您的MATLAB代码导出为C/C++。然后,您可以在VSCode中运行C/C++代码。

2
你也可以从IDE之外调用MATLAB代码(我想这可能需要一些VSCode扩展),但你的主要观点仍然成立,你需要安装MATLAB才能做到这一点,并且它将隐式地调用MATLAB引擎。 - Wolfie
这个扩展对我很有效。需要注意的是Matlab可执行文件需要在用户路径中。我认为仅第一句话就足以回答问题,不明白为什么要长篇论述Matlab许可证的性质以及如何生成C代码。实际上可以在没有IDE的情况下运行Matlab,matlab -nosplash -nodesktop,我经常从shell中使用,这也是这个扩展所使用的方式。 - Liam
@Liam 长篇大论是必要的,因为如果没有有效的MATLAB许可证和安装,那么拥有扩展是不起作用的。码器和mlint部分相对较不相关,毫无疑问,它们是为了澄清其他选项而添加的(特别是考虑到OP在问题中提到了安装mlint)。 - Adriaan

4
昨天MathWorks发布了自己的VSCode插件。
目前看起来它似乎不支持执行/调试,但我认为值得关注,因为它已经建立了与本地MATLAB安装的一些后台连接,并计划在将来添加执行功能。

我可以在VS Code中工作,但是我无法在那里运行代码? - undefined
到目前为止,是的。但是代码检查已经在运行中。 - undefined
我对"linting"这个术语并不熟悉,这是什么意思? - undefined
代码检查是一种静态分析代码质量的方法,有助于识别可能的错误源。维基百科对此的解释比我更好:https://en.wikipedia.org/wiki/Lint_%28software%29 - undefined

3

简短概述:

我在Linux上为VS Code编写了Matlab终端扩展。它可以运行MATLAB文件并生成一个MATLAB终端。你可以在这里找到存储库here。请注意,这仍然需要您安装有效的MATLAB许可证。

MatTer for VS Code

我最近想在VSCode中使用MATLAB终端。甚至有一个相应的扩展程序。但在使用该扩展程序时,我遇到了一些问题。此外,该存储库似乎不再活跃,并且所有者没有对问题和类似情况作出反应。

因此,我决定编写自己的第一个扩展程序MatTer for VS Code并将其发布到VS Marketplace。它还处于早期开发阶段,但已经可以生成一个MATLAB终端并运行MATLAB文件。

该存储库托管在Github上,请参见这里:https://github.com/mauzigoe/matter-for-vscode

要通过VSCode安装它,只需在扩展中搜索matter-for-vscode


1
您可以使用“Matlab交互式终端”扩展,链接如下。 要使用它,您需要按照说明安装“MATLAB Engine API for Python”,并且需要正常使用的Matlab。
安装扩展后,您可以在命令窗口中打开Matlab终端(按Ctrl+Shift+P并输入“打开Matlab终端”),然后您可以获得与真实的Matlab IDE相同的Matlab终端,现在您可以在Vscode中运行.m代码。

这是最好的方法。我还建议将以下内容添加到您的keybindings.json文件中。对于常规使用,人们可能还想将一个键绑定分配给“打开Matlab终端”命令。代码运行器方法也可以,但启动速度比使用Python的matlab-interactive-terminal扩展方法慢。{ "key": "shift+enter", "command": "workbench.action.terminal.runSelectedText", "when": "editorTextFocus && editorLangId == 'matlab'" } - mr. cooper

1
你可以使用 Code Runner 扩展,并将此行放入您的 settings.json 中:
"code-runner.executorMapByFileExtension": {
    ".m": "cd $dir && matlab -batch \"$fileNameWithoutExt\""
}

您可能还需要安装MATLAB扩展程序。

0
安装Octave编译器,进入相应的目录,然后在命令行中运行"octave"命令... 例如: abhibratanandy@fedora ~/A/Matlab (master)> octave first.m QSocketNotifier:只能与使用QThread启动的线程一起使用 qt.qpa.qgnomeplatform.theme:系统上没有可用的QtQuick Controls 2应用程序的桌面样式(qqc2-desktop-style)。应用程序可能显示不正常。
a * b = 455 544 633 456 600 744 x =
1 2 3
ans =
-1.0000 + 1.4142i -1.0000 - 1.4142i
b =
1   -6   11   -6

c = c =
 1     0   -97  -300   396

a =
2 3 5

0
很遗憾,目前你无法直接在VS Code中运行代码。你可以按照以下步骤操作:
首先,在VS Code中安装Matlab扩展程序。
其次,你可以在VS Code中编辑代码并进行新的格式化,然后在Matlab中运行该代码。这样,你可以同时在VS Code中编辑文件并在Matlab编辑器中运行它。

0

"@Liam 长篇大论是必要的,因为在没有有效的MATLAB许可证和安装的情况下,拥有扩展是无效的。因为最起码你需要一个工作的matlab安装来开发m文件 :)"

"我怀疑你是对的,这归结为将“外来”代码嵌入到m文件中或从外来IDE中调用matlab引擎之间的选择。他们确实有一个免费的RTE,但仍然需要某种形式的Matlab IDE进行编写,以及Matlab Compiler工具箱来为RTE构建项目。
解决方法是使用操作系统工具完全将Matlab和其他专有工具从循环中移除。这就是为什么如果你被迫支付5,000美元的专有工具,它必须通过其他方式来证明其合理性而不仅仅是“它可以完成工作”。"

VS Code 扩展与其他扩展一样存在同样的问题:如果你查看存储库并查看安装和运行扩展所需的内容,那么你可能再也不会安装扩展了。这就像轻率地从互联网上下载和安装任何代码一样不明智:它不比源代码更好。我建议在弄清如何在 VS Code 中调用 getOpen() 等函数而不是从某个随机来源下载某个随机扩展(尤其是过去两年没有更新的扩展)之前先等待一下。或者至少使用 VS2019 Community:

https://www.mathworks.com/matlabcentral/answers/100603-how-can-i-compile-a-matlab-engine-application-using-microsoft-visual-studio-9-0-or-10-0


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接