当参数μ设置为5,范德堡尔振荡器将会成为一个适度刚性微分方程。我预先使用了ode23s求解器;名称中的“s”表示它适用于刚性方程。在图中,您可以看到一系列仿真步,他们的解快速变化。在非刚性求解器中会出现更多仿真步。刚性ode求解器使用隐式方法,需要在每一步使用联立线性方程组。MATLAB标志式的反斜杠运算符在这里很好地发挥了作用。
数据类型
多年来,MATLAB只有一种数值数据类型:以64位格式存储的IEEE标准754双精度浮点。随着人们开始在更多应用和更大数据集中使用MATLAB,我们提供了更多的数据呈现方式。
单精度和整数
对于单精度算法的支持开始于本世纪初,在2004年发布的MATLAB 7中实现。由于仅需要32位存储,单精度将大型阵列的内存需求降低了一半。MATLAB没有声明,因此单精度变量由可执行转换函数获取。
MATLAB 7还引入三种无符号整数数据类型:uint8、uint16和uint32;三种带符号整数数据类型:int8、int16和int32;以及一种逻辑数据类型:logical。
稀疏矩阵
稀疏矩阵于1992年随MATLAB 4推出。这是一种能够显示超大数组(几乎不含非零值)又节省内存的方式。它们只会存储非零元素,以及行索引和指向列开头的指针。 MATLAB增加了一对函数sparse和full,这是MATLAB前端的唯一变化。所有运算几乎都能同等应用于全矩阵和稀疏矩阵。稀疏存储模式通过矩阵在以与非零项数量成比例的空间中呈现,而大多数运算则以与非零项上数学运算量的时间成比例计算稀疏结果。
单元阵列
单元阵列于1996年随MATLAB 5发布。单元阵列是一个包含索引的具有异构可能的MATLAB对象集合,包括其他单元阵列。单元阵列通过大括号{}创建。
单元阵列可通过大括号和圆括号进行索引。如果使用大括号,c{k}表示第k个单元的内容。如果使用圆括号,c(k)表示包含指定单元的另一个单元阵列。我们可以想象成邮箱集合。box(k)表示第k个邮箱。box{k}是第k个邮箱中的邮件。
结构
结构和“圆点表示法”于1996年发布。以下用于创建小班成绩簿的脚本显示了结构和圆点表示法的使用。
Math101.name = ["Alice Jones"; "Bob Smith"; "Charlie Brown"];
Math101.grade = ["A"; "B+"; "C"];
Math101.year = [4; 2; 3];
要调取名单,我们需要姓名列表。
disp(Math101.name)
"Alice Jones"
"Bob Smith"
"Charlie Brown"
更改Charlie的成绩则需要结构和数组表示。
Math101.grade(3) = “W”;
disp(Math101.grade)
“A”
“B+”
“W”
对象
2008年,我们对MATLAB面向对象编程功能进行了重要改进。创建类可简化涉及特定数据结构或与特殊数据交互的大量函数的编程任务。MATLAB 类支持函数和运算符重载、对属性和方法的控制访问、引用和值语义以及事件和侦听程序。
MATLAB图形系统是一个MATLAB面向对象编程方法的大型复杂示例。
提升MATLAB的可用性:桌面版和实时编辑器
首版MATLAB只是简单的终端应用程序。随着时间的推移,我们增加了图形化、编辑和其他工具的独立窗口。这些改进使MATLAB的使用变得更加简单,尤其是对那些没有编程经验的用户来说。两个影响最大的功能是桌面版和实时编辑器(Live Editor)。
桌面版
MATLAB桌面版于2000年发布。以下截图显示的是桌面版目前的界面。