VSCode中执行MATLAB代码单元必须使用Jupyter Notebook(.ipynb)模式并选择MATLAB内核,.m文件不支持单元执行;需确保mathworks.matlab官方插件已安装、matlab.defaultInterpreterPath指向matlab.exe、终端可识别matlab命令,否则内核无法启动。

VSCode里执行MATLAB代码单元,必须用Notebook模式
直接打开 .m 文件按 Ctrl+Enter 不会执行代码单元——那是脚本/函数编辑模式,不支持分块运行。只有在 Jupyter Notebook(.ipynb)中,且内核选为 MATLAB,才能真正以“单元”为粒度执行。
关键前提是:VS Code 已连接 MATLAB 引擎(状态栏显示 MATLAB:Connected),且已安装 MathWorks 官方插件(mathworks.matlab)。否则点“运行单元”按钮会静默失败或报 Kernel not found。
- 新建文件 → 保存为
test.ipynb(不是.m) - 点击右上角内核选择器 → 选
MATLAB (local)(若没出现,说明插件未连上或路径错) - 在第一个单元格输入
disp('hello'),按Shift+Enter执行 - 新单元格自动创建,继续写、运行,变量作用域在内核中持续存在
为什么 .m 文件里的“代码块”不能当单元执行
.m 文件在 VS Code 中是纯文本编辑模式,即使你用 % 分隔段落(如 %{ ... %} 或注释分段),它也不会被识别为可独立运行的单元。插件不会解析这些标记来启动 eval;它只把整个文件当脚本或函数加载。
常见误解是:选中几行 + Ctrl+Enter 就等于“运行单元”。其实这只是调用 matlab.engine.eval() 对高亮文本求值,不经过文件系统、不检查函数定义、也不维护上下文一致性——比如你在选中段里写了 x = 1; y = x + 1;,再选另一段 z = y * 2;,后者会报 Undefined function or variable 'y',因为每次 eval 是孤立会话。
-
Ctrl+Enter是即时 eval,不是 notebook 单元执行 - 它不共享 workspace,不保留变量,不触发 mlint 检查
- 适合调试单行表达式(如
size(A)),不适合逻辑分块验证
配置失败时最常卡在哪几个地方
即使装了插件、写了 .ipynb,也常因三处硬性配置缺失导致内核无法启动:
-
matlab.defaultInterpreterPath指向错误:填了安装目录(如C:\Program Files\MATLAB\R2025b\)而不是可执行文件(C:\Program Files\MATLAB\R2025b\bin\matlab.exe)→ 状态栏无MATLAB:Connected - 混装了第三方插件:如
MATLAB Unofficial或matlab-formatter→ 内核列表里压根不显示MATLAB (local) - 终端未识别
matlab命令:在 VS Code 集成终端里输matlab -version报command not found→ Notebook 启动时卡在 “Starting kernel…”
这三处任一出错,都会让 Notebook 模式完全不可用,且错误提示极不明显——往往只看到空白输出或无限 loading 圆圈。
执行单元后绘图不显示?这是预期行为
MATLAB Notebook 单元执行默认不弹窗绘图,plot(1:10) 这类命令不会跳出 figure 窗口,而是尝试内联渲染到 notebook 中。但实际效果取决于 MATLAB 版本和图形后端:
- R2023b 及之后版本默认启用
webgl渲染,支持内联显示plot、surf等基础图 - 若图没出来,先确认是否加了
print -dpng或saveas(gcf, ...)显式导出 - Simulink 模型图、App Designer 界面、
uifigure等 GUI 组件一律不支持内联,会直接报错或静默跳过 - 想看 figure 窗口?只能切回 MATLAB 桌面端,或改用脚本模式 +
matlab -desktop启动
别指望 notebook 能替代桌面端的所有可视化能力——它只做轻量级算法验证,复杂交互和 GUI 必须回到原生环境。


















