Vscode搭建轻量级Matlab开发环境

2023-11-04

一. 使用Vscode编写m文件的优势与不足

Matlab的启动速度很慢,为追求效率与编写体验,对于一些简单的m文件编写,我们可以选择在Vscode中进行编写和运行。

Vscode插件丰富,配置好Matlab环境后,可以实现以下功能:

  • 代码高亮
  • 代码自动补全
  • 实时语法检查
  • 代码格式化
  • 不启动Matlab GUI界面直接运行代码
  • 使用Matlab命令行的功能

遗憾的是,Vscode暂时还无法调试m文件也不能显示Matlab工作区,但编写不那么复杂的程序已经足够好用了。


二. 如何在Vscode中配置Matlab开发环境

2.1 安装Matlab相关扩展

Vscode中的Matlab扩展很多,比较好用的就下图中的四个。

扩展名 功能
Matlab 代码高亮、代码补全(此功能效果不佳,部分代码无法自动补全)、实时语法检查
Matlab Interactive Terminal 在Vscode的终端中运行m文件与Matlab命令行
Matlab Snippets 代码补全(对插件Matlab代码补全功能的补充)
matlab-formatter 代码格式化

2.2 扩展配置

2.2.1 Matlab扩展配置

共有5个选项可配置,我们需要配置的是其中的Matlabpath与Mlintpath。mlint.exe就是进行语法检查的程序。

对应Setting.json中的代码是:

  "matlab.matlabpath": "E:/Matlab/R2021a/bin/matlab.exe",
  "matlab.mlintpath": "E:/Matlab/R2021a/bin/win64/mlint.exe",

注意:此扩展无法通过环境PATH去发现对应程序,也无法在路径中以“$环境变量名”的方式使用环境变量,所以,Setting.json中需要写出两程序的绝对路径。这使得如果在多个电脑间使用Vscode,而这些电脑Matlab的安装位置或版本不一致时,每次同步设置都会使得此插件的路径设置失效,每次同步设置后都需要再根据具体电脑的Matlab位置去配置一遍这两个路径。

我已经在Github中向该插件的作者提出了这个问题,希望得到解决,但还没有得到回复。所以,现阶段,如果我们要使用多个电脑,最好保证Matlab安装位置与版本一致,这样就不用每次Setting.json同步后再去设置一下这两个路径了。

2.2.2 Matlab Interactive Terminal扩展设置

此扩展主页说明如下:

需要:

  • 64位Python
  • Matlab R2014b及以上版本
  • MATLAB Engine API for Python

注意:对Python的要求基于Matlab的版本,Matlab R2019b需要Python 3.6 或 3.7,关于MATLAB-Python的兼容性参考MathWorks网站。

简单来说,就是根据Matlab版本,安装相兼容的Python,然后在Python中安装一个名为MATLAB Engine API的支持包。

关于MATLAB Engine API的安装参见网站:https://www.mathworks.com/help/matlab/matlab_external/install-the-matlab-engine-for-python.html

打开CMD,

转到matlabroot\extern\engines\python文件夹,其中,matlabroot指的是matlab安装路径,代码为:

cd/d E:\Matlab\R2021a\extern\engines\python

再执行setup.py,代码为:

python setup.py install

过程如下:

注意:

  1. Python需添加到环境变量PATH中,否则python setup.py install将无法执行,因为cmd找不到Python.exe文件。

关于Python安装可参考我的另一篇博文:Python下载与安装教程

2.2.3 Matlab Snippets扩展设置

只需在setting.json中加一行代码:

"editor.snippetSuggestions": "top", // 在其它建议上方显示代码片段建议
2.2.4 matlab-formatter扩展设置

可调整缩进空格数,默认为4,一般不改。

此扩展可识别环境变量PATH,所以,Python加入PATH后,这里的Python Path不需要再指定。

说明一下,此扩展只要求Python 3,不要求特定版本的Python,如Python 3.7。

2.3 扩展设置总结

  1. 装好对应版本Python 3.x,Python路径添加到环境变量,然后安装MATLAB Engine API支持包

  2. 在setting.json中加入以下代码:

      //* matlab相关插件设置  begin +++++++++++++++++++++++++++++++++++++
      "editor.snippetSuggestions": "top", // 在其它建议上方显示代码片段建议
    
      "matlab.matlabpath": "E:/Matlab/R2021a/bin/matlab.exe",
      "matlab.mlintpath": "E:/Matlab/R2021a/bin/win64/mlint.exe",
      //* matlab插件相关 设置  end   -------------------------------------
    

三. 效果展示

从下图可以看到Vscode具备了代码Lint检查,高亮,格式化与运行代码的功能。


四. 其它可能用到的Matlab插件

4.1 Code Runner

Code Runner可以一键运行几十种语言,但默认是不支持Matlab的m语言的,直接运行会提示语言不支持:

需要在Setting.json中加一行设置,如下:

  "code-runner.executorMap": {
    "matlab": "cd $dir && matlab -nosplash -nodesktop -r $fileNameWithoutExt"
  },

并且需要将matlab.exe添加到系统环境变量PATH中,如下图所示,否则Code Runner扩展会找不到matlab。

运行演示:

可见,Code Runner是打开一个单独的Matlab命令行,而Matlab Interactive Terminal是将终端当做命令行,其余方面,两者运行m语言没什么区别。个人更喜欢Matlab Interactive Terminal的方式,它更护眼。

4.2 Matlab Code Run

此扩展下载量也很大,功能也是运行m语言的,但是,在我的台式机和笔记本上都无法运行,会提示如下错误。

不知道怎么解决这个问题,有同学知道可以在评论区告诉我,谢谢,暂时放弃此插件。


五. 总结

用Vscode编写m语言很便捷,不需要启动matlab(启动时间很长),不足的是无法调试,看不到工作区。基本满足简单m程序的开发需求。


徐晓康的博客持续分享高质量硬件、FPGA与嵌入式知识,软件,工具等内容,欢迎大家关注。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vscode搭建轻量级Matlab开发环境 的相关文章

  • 更新:随机将行添加到矩阵中,但遵循严格的规则

    以下是一个更大的矩阵的一部分 0 1 0000 1 0000 77 0000 100 0000 0 0 2500 0 1 0000 1 0000 72 0000 100 0000 0 2500 0 2500 0 1 0000 1 0000
  • 通过颜色渐变修补圆

    我正在尝试绘制一个颜色渐变 我希望它沿轴均匀 在下图由角度定义的情况下 pi 7 当我使用patch命令 绘图与所需的梯度方向匹配 但沿其方向并不均匀 沿圆的点之间形成各种三角形 这是代码 N 120 theta linspace pi p
  • 轴标注问题

    通过运行我编写的以下 matlab 函数 可以互换图中的 x 轴和 y 轴 谁能告诉我问题出在哪里或者帮我解决它吗 预先感谢您的任何帮助 function axislabeling n x 1 1 n y 1 1 n z zeros n n
  • 优先连接,Matlab 中的复杂网络

    大家好 我现在正在 MATLAB 中研究优先附件模型 在理解以下内容时遇到一些困难 假设我一开始有 4 个节点 连接如下 time 0 1 lt gt 2 3 lt gt 4 在下一个时间步骤中 我添加一个节点和 4 个连接 然后添加另一个
  • 如何从 matlab 调用 Qtproject?

    我在 matlab 中有一个函数可以写入一个 file txt 我在 qt 项目中使用它 So 当我使用 unix 获取要运行的 qt 编译可执行文件时 我有一个 Matlab 文件 但出现错误 代码 unix home matt Desk
  • MATLAB parfor 和 C++ 类 mex 包装器(需要复制构造函数?)

    我正在尝试使用概述的方法将 C 类包装在 matlab mex 包装器中here http www mathworks com matlabcentral newsreader view thread 278243 基本上 我有一个初始化
  • 在矩阵中找到叉的最快方法

    定义 A i j 1 是十字的中点 如果元素A i 1 j 1A i 1 j 1A i j 1 1A i j 1 1 这些元素和中点一起形成矩阵 A 中的十字 其中 A 至少是一个 3 3 矩阵 并且i j 0 假设上图是 8 8 矩阵 A
  • 图像处理方面的空间和时间表征有什么区别?

    我是学习图像处理的初学者 我对空间和时间表征的概念有点困惑 那么 对于空间表征来说 是不是像一张二维地图 包含了一些关于地图的统计信息呢 就时间特征而言 值是相对于时间的吗 这意味着什么以及我们为何关心 谢谢 当您在不同时间拍摄一系列图像时
  • 如何从 Matlab 运行 R 脚本 [重复]

    这个问题在这里已经有答案了 我有 m 文件 我想用它来运行 R 脚本 我怎样才能做到这一点 Matlab文件 caller m some matlab code need to call a R script some matlab cod
  • MATLAB 子图标题和轴标签

    我有以下脚本来最终绘制 4 x 2 子图 files getAllFiles preliminaries n size files cases cell 1 n m cell 1 n for i 1 1 n S load files i c
  • 使用网络计算机进行 Matlab 并行处理

    我熟悉matlabpool and parfor用法 但我仍然需要加快计算速度 我的 1GB 网络中有一台功能更强大的计算机 两台计算机都有 R2010b 并且具有相同的代码和路径 使用两台计算机进行并行计算的最简单方法是什么 我今天使用的
  • MATLAB 符号替换

    我知道在 MATLAB 中如果声明了 syms x y f x 2 y 2 grad gradient f 然后grad会存储值 2 x 2 y 如果我想评估梯度 2 2 I use subs f x y 2 2 这返回 4 4 我正在编写
  • MATLAB;具有 2+ 个/分割图例的饼图 R2017b

    我正在创建一个饼图 理想情况下希望图例水平显示在顶部和 或底部 然而 在几乎所有情况下 这是不可能的 因为图例超出了数字 因此 我理想情况下希望将图例分成两个 或更多 子图例并单独放置它们 我知道这不是 MATLAB 中的内置功能 我使用的
  • 可以避免迭代元胞数组时的“s{1} 烦恼”吗?

    The s 1 标题的 烦恼 指的是下面的 for 块中的第一行 for s some cell array s s 1 unpeel the enclosing cell do stuff with s end This s s 1 业务
  • MATLAB:MEX 矩阵除法给出的结果与 m 文件不同

    我使用 MATLAB 的编码器工具创建了矩阵指数函数的 MEX 版本 以在另一组函数中使用 问题是 MEX 版本给出的结果与原始 m 文件不同 经过调试 我认为这是因为MEX文件和m文件没有做相同的矩阵除法 或者 MEX 文件首先就有问题
  • 有没有办法在 MATLAB 中查看 pcode 文件 (.p) 的源代码?

    有没有办法在 MATLAB 中打开 pcode 文件 p 如果 开放 是指edit 那么当然不是 pcode 中的 p 代表 受保护 其主要设计目标是在保护其源代码的同时部署功能组件 如果 开放 是指run 那么当然是的 引用手册 http
  • Matlab-如何在曲线上绘制切线

    我在 matlab 中绘制了一个图表 plot x y 我的图表有不同的斜率 我如何在每个斜率上绘制切线并计算斜率的系数 如果您没有用于绘制点的显式函数 您可以使用有限差分 http en wikipedia org wiki Finite
  • 如何将条形图的 XtickLabels 向左移动?

    我目前正在尝试创建频率直方图 为此 我必须创建一个条形图 条形图之间没有空格 然而 这集中于XTickLabels在酒吧的中间 由于它是一个直方图 我希望数值位于每个条形之间的线上 以便它可以直观地指示间隔 本质上 我需要将所有刻度标签移至
  • 在 3d 空间中的两个平面之间进行插值

    我正在开发一种工具 可以让您在 3D 体积 上圈出 包围事物 我想通过标记 切片 1 和 3 并从该信息 填充 切片 2 来节省时间 两个简单的解决方案是 1 slice2 slice1 AND slice3 gets the overla
  • 图像堆栈的最大强度投影

    我正在尝试重新创建该功能 max array 3 来自 MatLab 它可以获取 N 个图像的 300x300px 图像堆栈 我在这里说 图像 因为我正在处理图像 实际上这只是一个大的双数组 300x300xN 并创建一个 300x300

随机推荐

  • windows命令行下ftp连接超时的可能原因

    1 需要连接的主机没有启用ftp服务 iis没有建立ftp站点 ftp身份验证设置不当 详情参考博文 windows下使用ftp 以及 windows开启ftp服务 两篇博文有重复的部分 我将他们取并集操作了一遍 另外 我还处理了iis未授
  • 使用Visual Studio编译ffmpeg

    一 首先参照下面的链接配置和编译 FFmpeg在VS2017下的编译 vs2017 ffmpeg源码编译 鱼儿 1226的博客 CSDN博客 vs2019编译ffmpeg源码为静态库动态库 完整步骤 亲测可行 ffmpeg vs 令狐掌门的
  • 嵩天老师-Python语言程序设计-Python123配套练习测验题目汇总整理

    测验1 Python基本语法元素 知识点概要 普遍认为Python语言诞生于1991年 Python语言中的缩进在程序中长度统一且强制使用 只要统一即可 不一定是4个空格 尽管这是惯例 IPO模型指 Input Process Output
  • 求最长不含重复字符的子字符串——C++

    声明 本文原题主要来自力扣 记录此博客主要是为自己学习总结 不做任何商业等活动 一 原题描述 剑指 Offer 48 最长不含重复字符的子字符串 请从字符串中找出一个最长的不包含重复字符的子字符串 计算该最长子字符串的长度 示例 1 输入
  • Linux查看进程命令

    查看进程 1 ps 命令用于查看当前正在运行的进程 grep 搜索 例如 ps ef grep java 表示查看所有进程里 CMD 是 java 的进程信息 2 ps aux grep java aux 显示所有状态 ps 3 kill
  • Sublime Text4 配置 Python3 环境、代码提示、编译报错教程

    1 配置 Python3 环境 单击 工具 gt 编译系统 gt 新建编译系统 弹出 替换里面的内容为 cmd G CodeTools anaconda3 python exe u file file regex File line 0 9
  • 数据中台数据分析过程梳理

    在当今社会中 随着企业的快速发展 相关业务系统的建设也会越来越多 新的业务模式 新的IT架构 多云环境的出现等等 而一些问题就逐渐暴露了出来 企业之间的IT无法做到互通 新模式生产数据与旧数据无法互通 企业IT架构错综复杂 底层数据互通更加
  • java使用opencv库二值化图片

    应用场景 截取监控视频图片保存到本地后用作后期监控视频角度调整参考 使用二值化后的图片并进行透明度降低进行监控矫正 package img import java awt Color import java awt image Buffer
  • delphi XE5如何把其它程序而不是本软件在通知区域的图标隐藏?不是关闭进程。请举个详细例子,比如Shell_NotifyIcon...

    Delphi XE5可以使用API函数Shell NotifyIcon来实现隐藏其它程序的图标 具体代码例子如下 procedure HideIcon APid Cardinal var noteIconData TNOTIFYICONDA
  • 关于 hostapd

    关于 hostapd 主页 http w1 fi hostapd hostapd是一个IEEE 802 11的AP和IEEE 802 1X WPA WPA2 EAP RADIUS验证器 此页面用于怎么在linux系统下使用它 其他操作系统请
  • 金融贷款行业实时高精准获客 ——三网运营商大数据

    都说生产是第一因素 但对于任何企业来说 客户来源才是第一因素 在大多数行业 获得客户的困难已经成为行业的挑战 如今 许多行业和企业获得客户的主要来源是在线促销和客户获取 现在几乎每个人都有一部手机 运营商可以根据移动客户的访问行为 通信行为
  • 排查java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException:***

    首先排查 vi etc sysconfig network 没有就加上 HOSTNAME 你的主机名 XXXX 如果有 接着排查 vi etc hosts 没有就加上 127 0 0 1 localhost localdomain loca
  • 2021年全球与中国高速分散机行业市场规模及发展前景分析

    2021年全球与中国高速分散机行业市场规模及发展前景分析 本报告研究全球与中国市场高速分散机的发展现状及未来发展趋势 分别从生产和消费的角度分析高速分散机的主要生产地区 主要消费地区以及主要的生产商 重点分析全球与中国市场的主要厂商产品特点
  • 论文阅读:DeepFake-Adapter: Dual-Level Adapter for DeepFake Detection(Deepfake模型快速调参)

    一 论文信息 论文名称 DeepFake Adapter Dual Level Adapter for DeepFake Detection 作者团队 项目主页 https github com rshaojimmy DeepFake Ad
  • python爬取 百姓网部分数据 + 存入MongoDB数据库详细案例

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 目录 前言 一 实施步骤 二 目标网站 先分析目标网站 三 获取数据 1 引入库 2 请求数据 2 1 获取第一层链接 3 抓取数据 3 1 分析页面 3 2 抓取数据 四
  • 图像可变游程之混乱代码

    图像可变游程之混乱代码 图像可变游程之混乱编码 可变游程编码 VLC 混乱编码 参考代码 图像可变游程之混乱编码 这里 对我的自画像代码作一个简要解释 自画像代码实际上是一个解码器 包括两个部分 图像的可变游程编码 varied lengt
  • ValueError: check_hostname requires server_hostnameWARNING: You are using pip version 21.1.3

    ValueError check hostname requires server hostname WARNING You are using pip version 21 1 3 however version 22 2 2 is av
  • LCD1602芯片的使用——简单易懂

    题目 想在LCD1602上显示两行如下字样 huaianxinxi wantin 想完成上面的显示必须掌握LCD1602芯片的基本知识 将在程序下面附上LCD1602芯片的基本知识 供大家参考 我实现的比较简单 没有什么花哨的显示 大家首先
  • js 聚合函数

    在JavaScript中 聚合函数是一种用于处理数据集合的函数 它们接收一个数据集合作为输入 并返回一个单一的值作为输出 聚合函数通常用于对数据进行统计 计算总和 平均值 最大值 最小值等操作 下面是一些常见的聚合函数的概念 sum 求和
  • Vscode搭建轻量级Matlab开发环境

    一 使用Vscode编写m文件的优势与不足 Matlab的启动速度很慢 为追求效率与编写体验 对于一些简单的m文件编写 我们可以选择在Vscode中进行编写和运行 Vscode插件丰富 配置好Matlab环境后 可以实现以下功能 代码高亮