必须用matlab命令行可执行文件而非安装目录或matlabroot,否则所有功能静默失效;需先确保终端能识别matlab命令,再在settings.json中精确配置matlab.defaultInterpreterPath为绝对路径,重启后左下角显示MATLAB:Connected才生效。

必须用 matlab 命令行可执行文件,而不是 MATLAB 安装目录或 matlabroot 返回值,否则所有调用都会静默失败。
确认 matlab 命令在终端可用
VSCode 调用 MATLAB 命令行工具的前提,是系统能直接识别 matlab 这个命令。这不是可选步骤,而是硬性门槛。
- 打开 VS Code 集成终端(
Ctrl+`),输入matlab -version—— 应立刻返回版本号(如R2025b) - 如果报
command not found或'matlab' is not recognized,说明 MATLAB 未加入系统PATH - Windows 用户:运行
where matlab,取第一行完整路径(如C:Program FilesMATLABR2025binmatlab.exe),把该路径的上一级(即...R2025bin)加进系统环境变量PATH - macOS/Linux 用户:运行
which matlab,若无输出,需手动将/Applications/MATLAB_R2025b.app/bin或/usr/local/MATLAB/R2025b/bin加入~/.zshrc或~/.bash_profile的PATH
matlab.defaultInterpreterPath 必须指向可执行文件
VS Code 官方插件(mathworks.matlab)不读取系统 PATH,它只认 matlab.defaultInterpreterPath 这个设置项。填错就全挂,且不报错、不提示、不连接。
- 这个值不是安装目录(如
C:Program FilesMATLABR2025b),也不是matlabroot输出(如/Applications/MATLAB_R2025b.app),而是带扩展名的绝对路径 - Windows 示例:
"matlab.defaultInterpreterPath": "C:\Program Files\MATLAB\R2025b\bin\matlab.exe"或用正斜杠"C:/Program Files/MATLAB/R2025b/bin/matlab.exe" - macOS/Linux 示例:
"matlab.defaultInterpreterPath": "/Applications/MATLAB_R2025b.app/bin/matlab" - 务必在 VS Code 的
settings.json中编辑(搜索matlab.defaultInterpreterPath→ 点“在 settings.json 中编辑”),不要只改 UI 设置面板 - 改完重启 VS Code,左下角出现稳定的
MATLAB:Connected才算生效
三种可靠调用方式,别点右上角 ▶ 图标
那个三角形“运行”按钮背后逻辑混乱:它不保证当前工作目录正确,也不校验脚本是否已保存,极易触发 Undefined function or variable 或 Cannot find file 错误。
-
终端手动执行:在集成终端中运行
matlab -nodisplay -r "cd('$fileDirname'); run('$fileBasenameNoExtension'); exit;"—— 显式切换目录再运行,最可控 -
配置
tasks.json:在项目根目录.vscode/tasks.json中写入:{ "version": "2.0.0", "tasks": [{ "label": "Run MATLAB script", "type": "shell", "command": "matlab", "args": ["-batch", "cd('$fileDirname'); run('$fileBasenameNoExtension');"] }] }之后用Ctrl+Shift+P→Tasks: Run Task触发 -
代码块求值:选中一段代码(如
x = 1:10; plot(x, sin(x))),按Ctrl+Enter—— 这走的是 MATLAB 引擎eval,不依赖文件路径或保存状态,适合调试中间结果
最容易被忽略的点:多个 MATLAB 插件共存会直接破坏语言服务。只要装了非官方插件(比如 MATLAB Unofficial、matlab-formatter),mathworks.matlab 就会静默失效——补全消失、mlint 不报错、状态栏不显示连接。卸载所有第三方 MATLAB 扩展,只留 MathWorks 官方那一个,是稳定调用的前提。


















