官方文档主页
各版本对比
MathWorks - Archived MathWorks Documentation - MathWorks 中国
发行说明: MATLAB- MATLAB & Simulink- MathWorks 中国
基本原则还是使用最新版的,如果硬件资源有限可参考主要变化选择合适的版本 建议2020b以及以后版本
几个关键版本变化
1,支持实时脚本和实时函数.mlx文件
MATLAB® 实时脚本和实时函数是交互式文档,它们在一个称为实时编辑器的环境中将 MATLAB 代码与格式化文本、方程和图像组合到一起。此外,实时脚本可存储输出,并将其显示在创建它的代码旁。
什么是实时脚本或实时函数?- MATLAB & Simulink- MathWorks 中国
-
MATLAB R2016a - MATLAB 支持 R2016a 及更高版本中的实时脚本,以及 R2018a 及更高版本中的实时函数。
-
操作系统 - 从 R2019b 开始,在 MATLAB 支持的所有操作系统中,MATLAB 都支持实时编辑器。有关详细信息,请参阅系统要求。
对于 MATLAB 版本 R2016a 至 R2019a,MATLAB 支持的操作系统中有几个不支持实时编辑器。
不支持的操作系统包括:
-
Red Hat Enterprise Linux 6。
-
Red Hat Enterprise Linux 7。
-
SUSE Linux Enterprise Desktop 版本 13.0 及更早版本。
-
Debian 7.6 及更早版本。
此外,一些操作系统需要额外的配置才能在 MATLAB 版本 R2016a 到 R2019a 中运行实时编辑器。如果您无法在系统中运行实时编辑器,请联系技术支持以了解有关如何配置系统的信息。
-
2,串口通信新的api
2019b新的串口通信api
串行端口接口有一组新的函数和属性。现有功能仍可运行,但推荐使用新的函数名称和属性。新接口提高了性能。
通过使用 serialportlist 查看计算机上所有串行端口的列表,来开始使用新接口。
list = serialportlist
list = 1×4 string array "COM1" "COM3" "COM4" "COM8"
然后,创建一个 serialport 对象,将数据写入设备,并从中读取数据。
s = serialport("COM8",115200); write(s,1:5,"uint32") read(s,5,"uint32");
3,tcpip通信新的api
R2020b 优化了tcpip和串口通信
TCP/IP 客户端接口有一组新的函数和属性。
您仍可以使用现有函数执行以下操作:
-
使用
tcpclient
函数创建一个与 TCP/IP 服务器的 TCP/IP 客户端连接。 -
使用
read
函数从远程主机读取数据。 -
使用
write
函数将数据写入远程主机。
现在,您可以使用新函数执行以下操作:
-
使用
echotcpip
函数启动 TCP/IP 回显服务器。 -
使用
readline
函数从远程主机读取一行 ASCII 字符串数据。 -
使用
writeline
函数向远程主机写入一行 ASCII 字符串数据。 -
使用
configureTerminator
函数为与远程主机的 ASCII 字符串通信设置终止符。 -
使用
configureCallback
函数为与远程主机的通信设置回调函数和触发条件。 -
使用
flush
函数刷新缓冲区,以便与远程主机通信。
通过创建一个连接到 TCP/IP 回显服务器的 tcpclient
对象、向其写入数据和从中读取数据,开始使用 TCP/IP 客户端接口。
echotcpip("on",3030) t = tcpclient("localhost",3030) write(t,1:5,"uint8") read(t,5);
有关详细信息,请参阅 TCP/IP 通信。
串行端口接口:改进了性能
serialport
接口的性能优于 serial
接口。例如,在使用 9600 的默认波特率时,以下代码中使用 serialport
对象写入和读取数据的速度大约是使用 serial
对象写入和读取数据速度的 1.1 倍。
% s is a serial object function timingTest(s,bytecount) fwrite(s,1:bytecount,"uint8"); fread(s,bytecount,"uint8"); end
% s is a serialport object function timingTest(s,bytecount) write(s,1:bytecount,"uint8"); read(s,bytecount,"uint8"); end
不同波特率条件下大致执行时间如下:
s.BaudRate | ||||
9600 | 19200 | 56000 | 115200 | |
serial | 120 毫秒 | 68 毫秒 | 31 毫秒 | 23 毫秒 |
serialport | 109 毫秒 | 55 毫秒 | 21 毫秒 | 11 毫秒 |
代码是在运行 Windows 10 的 Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60 GHz 测试系统上使用 timeit
函数进行计时的:
bytecount = 100; timeit(@()timingTest(s,bytecount))
测试是使用串行环回连接器完成的。
有关详细信息,请参阅串行端口设备。
4,对python的支持
2021b 支持python3.9
2021a 支持3.8 停止支持3.6
2020b停止支持3.5
2019a MATLAB 现在除支持 CPython 2.7、3.5 和 3.6 之外,还支持 CPython 3.7。
2018b Python 接口:在 MATLAB 和 Python 之间传递多维数值或逻辑数组
2018a Python 版本 3.4:已停止支持
支持的 Python 版本 - 3.5 或 3.6 版。
5,git的支持
2020a 工程 API:以编程方式获取最新 Git 修订版
2019b 比较 Git 分支:显示差异并保存副本
2019a 源代码管理集成:将 MATLAB Git 状态与外部 Git 客户端同步
2021b新功能
1,实时编辑器任务
帮助使用者自动生成代码并用用户界面进行参数调整
实时编辑器任务是可以添加到实时脚本中以执行一组特定操作的 App。您可以将任务添加到实时脚本中,以探查参数并自动生成代码。使用任务可缩短开发时间、减少错误并缩短在绘图上花费的时间。
任务代表一系列 MATLAB® 命令。您可以采用内嵌方式或在右侧显示其输出。
文档
将交互式任务添加到实时脚本中- MATLAB & Simulink- MathWorks 中国
视频
What Are Live Editor Tasks? Video - MATLAB
2,项目和版本管理
MATLAB and Simulink Projects Video - MATLAB
3,验证函数输入
在 MATLAB ® 中使用函数参数验证来声明对函数输入参数的特定限制。您可以约束函数输入值的类、大小和其他方面,而无需在函数体中编写代码来执行这些测试。
Validating Function Inputs Video - MATLAB
新产品
- RF PCB Toolbox - 对印刷电路板进行电磁分析
- Signal Integrity Toolbox - 对高速串行和并行链路进行仿真和分析
重要更新
- Lidar Toolbox - 使用激光雷达查看器,以交互方式可视化、分析和预处理激光雷达点云
- Simulink Code Inspector - 使用 Code Inspector 上下文选项卡,检查兼容性、检查代码并直接在模型中查看结果
- Simulink Control Design - 设计模型参考自适应控制器
- Symbolic Math Toolbox - 在 MATLAB 实时编辑器中提供下一步操作建议,引导用户完成符号工作流
- Wavelet Toolbox - 使用小波分析处理和提取信号和图像的特征,以用于 AI 工作流
- R2021b - MATLAB 和 Simulink 产品系列发布更新 - MATLAB & Simulink
- Release Notes- MATLAB & Simulink- MathWorks 中国
其他
编辑器代码:自动显示代码建议和完成
编辑器重构:自动将选定的代码转换为函数
实时编辑器控件:设置滑块、下拉列表、复选框和编辑字段的默认值
实时编辑器动画:将动画导出为电影或动画 GIF
实时编辑器:提高保存实时脚本或函数时的性能
比较工具:比较和合并具有改进的可用性、外观和语法突出显示的文本文件
sftp
功能:连接SFTP服务器
HDF5 接口:使用新功能支持 HDF5 1.10.7
除了现有的对 2.7、3.7 和 3.8 的支持之外,MATLAB 现在还支持 CPython 3.9
2021a
实时编辑器动画播放控件:用于控制动画的交互式界面
实时编辑器控件:通过将变量关联到下拉项和滑块值,在实时脚本中创建动态控件
XML 文件:使用 readtable
、readtimetable
和其他函数读取、写入和导入 XML 文件
低级文件 I/O 函数和远程数据:对远程存储的文件执行读写操作
save
和 load
函数与远程数据:将数据保存、加载和追加到远程存储的 v7.3 MAT 文件中
读取在线数据:使用 readtable
、audioread
和其他读取函数通过 HTTP 和 HTTPS 读取文件
数据压缩函数:改进了 zip
/unzip
和 tar
/untar
的功能
jsonencode
:为 JSON 文本添加缩进
创建绘图实时编辑器任务:以交互方式创建绘图并生成代码
C++ 接口支持下列额外的 C++ 语言功能。
Java 引擎应用程序中使用 MATLAB 值对象
支持的 Python 版本,即 3.7 或 3.8 版
增加了对 IMU 传感器的支持
现在,MATLAB Support Package for Raspberry Pi™ Hardware 可为下列 IMU 传感器提供代码生成和连接到 Raspberry Pi 函数的 IO 支持:
-
HTS221
-
LPS22HB
-
LSM303C
-
LSM6DSL
-
LSM9DS1
-
MPU-6050
-
MPU-9250
2020b
比较工具:在 MATLAB Online 中比较文本文件
readstruct
和 writestruct
函数:在 XML 文件中读取和写入结构化数据
readlines
函数:以字符串数组形式读取文本文件中的行
HDF5 文件和基于 Web 的数据:使用现有 HDF5 函数读取和写入远程存储的 HDF5 文件
HDF5 文件:读取和写入使用 Unicode 字符编码的文件名
音频文件和基于 Web 的数据:使用 audioread
、audiowrite
和 audioinfo
读取和写入远程存储的音频文件
TCP/IP 客户端接口:新的函数和属性
TCP/IP 客户端接口有一组新的函数和属性。
您仍可以使用现有函数执行以下操作:
-
使用
tcpclient
函数创建一个与 TCP/IP 服务器的 TCP/IP 客户端连接。 -
使用
read
函数从远程主机读取数据。 -
使用
write
函数将数据写入远程主机。
现在,您可以使用新函数执行以下操作:
-
使用
echotcpip
函数启动 TCP/IP 回显服务器。 -
使用
readline
函数从远程主机读取一行 ASCII 字符串数据。 -
使用
writeline
函数向远程主机写入一行 ASCII 字符串数据。 -
使用
configureTerminator
函数为与远程主机的 ASCII 字符串通信设置终止符。 -
使用
configureCallback
函数为与远程主机的通信设置回调函数和触发条件。 -
使用
flush
函数刷新缓冲区,以便与远程主机通信。
-
串行端口接口:改进了性能
-
serialport
接口的性能优于serial
接口。例如,在使用 9600 的默认波特率时,以下代码中使用serialport
对象写入和读取数据的速度大约是使用serial
对象写入和读取数据速度的 1.1 倍。
源代码管理:改进了设置 Git 源代码管理的工作流
现在,您可以将 nullptr
传递给 C++ 函数。
MATLAB 现在除支持 CPython 2.7、3.6 和 3.7 之外,还支持 CPython 3.8
Java 包将被删除
实时编辑器任务:以交互方式从 USB 网络摄像头捕获图像,并在实时脚本中生成 MATLAB 代码。
2020a
文件编码:默认情况下,将 MATLAB 代码文件 (.m
) 和其他纯文本文件保存为 UTF-8 编码文件
switch
函数:更灵活地比较对象
copyfile
和 movefile
函数:访问基于 Web 的存储服务,如 Amazon Web Services 和 Azure Blob 存储
数据存储:使用 writeall
将数据从数据存储写入文件
文本文件和电子表格文件:使用 'WriteMode'
参数追加、覆盖或替换数据
h5create
和 h5write
:将字符串数据写入 HDF5 文件
jsonencode
:在 MATLAB 类中自定义编码
导入工具不再支持导入 HDF5 文件。要以编程方式导入 HDF4 或 HDF-EOS 文件,请改用 hdfread 函数。
工程 API:以编程方式获取最新 Git 修订版
MATLAB 提供接口 clib.array
来封装 C++ 原生数组和 std::vector
类型。
从 R2020a 开始,MATLAB 支持 AdoptOpenJDK - Open source, prebuilt OpenJDK binaries 提供的 OpenJDK 8 (Hot Spot)。
硬件支持
MATLAB Support Package for Ryze Tello Drones:从 MATLAB 控制 Ryze Tello 无人机,并获取传感器和图像数据
增加了对 Raspberry Pi 4B 模型板的支持
在 Raspberry Pi 硬件上部署深度学习应用程序
从连接到 Arduino 硬件的 GPS 接收器读取 GPS 数据
将 BNO055 传感器与 Sensor Fusion and Tracking Toolbox 和 Navigation Toolbox 结合使用来估计方位
为 MATLAB Function 模块中的 MATLAB Arduino 函数生成支持 I2C 和 SPI 的代码
功能变化或删除
i2cdev 和 spidev 函数将在 R2020a 中删除
警告
servo 对象的属性 Pins 将在 R2020a 中删除
警告
类 arduinoio.LibraryBase 将在 R2020a 中删除
警告
MATLAB 将在 R2020a 中停止支持 Adafruit Bluefruit EZ-Link Shield and Programmer
警告
2019b
实时编辑器任务:将交互式任务添加到实时脚本中,以分析参数并自动生成代码
实时编辑器输出:对绘图进行动画处理以显示数据随时间的变化
实时编辑器代码:复制一行或多行代码。
MATLAB Drive:与他人共享文件夹和协作
RESTful 函数:支持身份验证
RESTful Web 服务函数 webread
、websave
和 webwrite
还支持摘要式身份验证。有关详细信息,请参阅 weboptions
'Username'
参数。
有关 RESTful 函数支持的身份验证列表,请参阅Server Authentication。
兼容性注意事项
现在,对于基本身份验证,RESTful 函数 webread
、webwrite
和 websave
更严格地遵循 Internet Engineering Task Force (IETF®) 文档 RFC 7617 的规定。因此,当 RESTful 函数与主动期望基本身份验证但不返回 401 质询响应的服务器通信时,MATLAB 可能会出错。
tcpclient
、read
和 write
函数:生成 C 和 C++ 代码
tcpclient、read 和 write 函数支持使用 MATLAB Coder 生成 C 和 C++ 代码。
串行端口设备:新的函数和属性
串行端口接口有一组新的函数和属性。现有功能仍可运行,但推荐使用新的函数名称和属性。新接口提高了性能。
通过使用 serialportlist 查看计算机上所有串行端口的列表,来开始使用新接口。
list = serialportlist
list = 1×4 string array "COM1" "COM3" "COM4" "COM8"
然后,创建一个 serialport 对象,将数据写入设备,并从中读取数据。
s = serialport("COM8",115200); write(s,1:5,"uint32") read(s,5,"uint32");
有关详细信息,请参阅串行端口设备。
兼容性注意事项
有关更新代码以使用推荐功能的详细信息,请参阅将您的代码转换为 serialport 接口。
不推荐使用 seriallist
函数
仍可运行
不推荐使用 serial
函数
仍可运行
App 设计工具:将 UI 图窗或容器中的组件从基于像素的定位转换为网格布局管理器
外部语言接口
C++ 接口:发布 C++ 接口库的选项
C++ 接口:支持 nullptr
作为输出参数
C++ 接口:只读 (const
) 对象支持
Java 接口:JRE 版本 1.8.0_202 支持
C++ MEX 函数的进程外执行:自定义环境变量
HTTP Web 服务:服务器身份验证支持 NTLM 和 Kerberos 协议
HTTP Web 服务:超时选项
Python 接口:在进程外执行 Python 函数
Python 接口和引擎:已停止 3.5 版支持
2019a
实时编辑器控件:添加复选框、编辑字段和按钮以用于设置变量值并运行实时脚本
append
函数:合并字符串
数据导入和导出
readmatrix
、readvars
和 readcell
函数:以矩阵、变量或元胞数组形式读取表格数据
writematrix
和 writecell
函数:将表格数据从矩阵或元胞数组写入文本文件或电子表格文件
readtimetable
和 writetimetable
函数:读写时间表
detectImportOptions
函数:改进文本文件和电子表格文件导入选项的检测
外部语言接口
C++:在 MATLAB 中使用来自第三方库的 C++ 类
Python:支持版本 3.7
Python 引擎:数据类型支持
C++ MEX:在进程外执行 MEX 函数
MEX 函数:使用自定义版本的 Boost 库
MATLAB 数据数组:支持行优先内存布局
支持编译 MEX 文件以及独立的 MATLAB 引擎和 MAT 文件应用程序的编译器发生变化
2018b
实时编辑器:使用新增的子标题样式组织实时脚本
实时编辑器:使用内部超链接在实时脚本中导航
实时编辑器:以交互方式筛选表输出,然后将生成的代码添加到实时脚本中
实时编辑器:更快地新建和打开现有实时脚本
实时编辑器:更改文本或代码的大小写
比较工具:合并实时脚本或函数的两个版本
导入工具:改进从电子表格导入时的代码生成
stlread
和 stlwrite
函数:从 STL(立体光刻)文件中读取或向其写入三角剖分信息
在浏览器中运行 App:使用大多数现行的浏览器在 MATLAB Online 中运行 App 或作为预部署 Web App 运行
硬件支持
MATLAB Online:通过 MATLAB Online 与 Raspberry Pi 硬件板通信
在 Raspberry Pi 硬件上部署 MATLAB 函数
iOS 和 Android 传感器:当您的设备无法访问网络时,获取传感器数据
iOS 和 Android 传感器:将传感器日志从设备上传到 MATLAB Drive
Java SE 8:MATLAB 支持该版本,增强了安全性并支持访问新 Java 功能
Python 接口:在 MATLAB 和 Python 之间传递多维数值或逻辑数组
C++ MEX API:使用 C++ API 从 MEX 文件内异步调用 MATLAB
2018a
可在嵌入式设备上运行
自动将 MATLAB 算法转换为 C/C++ 和 HDL 代码, 无需重写代码或学习大数据编程就能扩展你的分析在群集、GPU 和云上运行。
实时编辑器:创建包含格式丰富的文档(包括方程和图像)的实时函数
在实时编辑器中,您可以创建接受输入并返回输出的实时函数。您可以用格式丰富的文本为实时函数编写文档,包括方程、图像和经过格式化的代码示例。然后,您可以使用 doc
命令在帮助浏览器中查看文档。有关详细信息,请参阅创建实时函数。
实时编辑器:调试实时函数和脚本
实时编辑器:添加滑块和下拉列表以控制实时脚本中的变量值
实时编辑器:以交互方式对表数据排序
实时编辑器:创建目录并添加格式化代码示例
空数组:使用 zeros
和 ones
等函数创建空复数数组
数据导入和导出
readtable
函数:使用导入选项指定要从文本文件读取的行数
readtable
函数:使用导入选项轻松管理数据中的前缀和后缀
preview
函数:预览文件中表的前 8 行,而不导入完整表
App 设计工具:使用 MATLAB Compiler 创建预部署 Web App
硬件支持
Raspberry Pi:支持 Raspberry Pi Zero W 板
MATLAB Online:在 MATLAB Online 中从 USB 网络摄像头采集实时图像
C++ MEX 接口:从 C++ 中更轻松地访问 MATLAB 数据和对象
matlab.net.http 包:以流方式将数据传入或传出 Web 服务,并处理表单和 multipart 消息
对 Python® 3.4 版的支持已停止。
兼容性注意事项
为确保继续支持您的应用程序,请升级到受支持的 Python 版本 - 3.5 或 3.6 版。
2017b
实时编辑器:使用参数、属性值和备选语法的自动上下文提示编写 MATLAB 命令
实时编辑器:将实时脚本导出为 LaTeX 格式
实时编辑器:在 PDF 输出中显示高分辨率绘图
MATLAB Drive:从任何位置存储、访问和管理您的文件
arrayfun
、cellfun
和 structfun
函数:返回对象数组作为输出参数
脚本:在包含局部函数的脚本中运行节
isfile
和 isfolder
函数:确定输入是文件还是文件夹
数据分析
ischange
函数:检测数据中的突然变化
islocalmin
和 islocalmax
函数:检测数据中的局部最小值和最大值
硬件支持
Arduino:使用低成本 Bluetooth 适配器以无线方式连接到 Arduino 板
Arduino 设置 UI:通过 USB、Bluetooth 或 Wi-Fi 建立与 Arduino 板的连接
Arduino 插件检测:当插入兼容的 Arduino 板时,会发现可用的 Arduino 支持和示例
高级软件开发
用于 C++ 的 MATLAB 引擎 API:从支持面向对象的编程和异步执行的 C++ 程序运行 MATLAB 代码
用于 C++ 的 MATLAB 引擎 API:使用 MATLAB 数据数组在 C++ 程序和 MATLAB 之间传递数据
Java SE 8:MATLAB 支持该版本,增强了安全性并支持访问新 Java 功能
MinGW 5.3:MATLAB 支持
Microsoft Visual Studio 2017:MATLAB 支持 Microsoft Visual Studio 2017 Community、Professional 和 Enterprise 版
支持编译 MEX 文件以及独立的 MATLAB 引擎和 MAT 文件应用程序的编译器发生变化
Python 3.6 版:MATLAB 支持
R2017a
新增功能, Bug 修复
R2016b
新增功能, Bug 修复