技术文章和通讯

MATLAB简史

作者:克利夫·莫勒,MathWorks


第一个matlab.®不是编程语言;这是一个简单的交互式矩阵计算器。没有程序,没有工具箱,没有图形。没有odes或ffts。

在这个克里夫的角落里,我将描述MATLAB从那些简单的开始发展的一些里程碑。

数学起源

MATLAB第一版的数学基础是J.H.Wilkinson和他的18位同事在1965年至1970年间发表的一系列研究论文,后来在2002年收集自动计算手册,第二卷,线性代数,由Wilkinson和C.Reinsch编辑。这些论文介绍了用Algol 60实现的算法,用于求解矩阵线性方程和特征值问题。

eispack和linpack.

1970,阿贡国家实验室的一组研究人员向美国国家科学基金会(NSF)提出“探索生产、测试和传播高质量数学软件以及在某些问题领域测试、认证、传播和支持数学软件包所需的方法、成本和资源。”该小组开发了EISPACK(矩阵特征系统包)通过将手册中特征值问题的Algol程序翻译成Fortran语言,并广泛致力于测试和可移植性。EISPACK的第一个版本于1971年发布,第二个版本于1976年发布。金宝app

1975年,我们四个人杰克·东加拉、皮特·斯图尔特、吉姆·本奇和我向国家科学基金会提出了另一个研究项目,该项目将研究数学软件开发的方法。一个副产品将是该软件本身,称为LINPACK,用于线性方程包。该项目也以阿贡为中心。

Linpack起源于Fortran;它没有涉及来自algol的翻译。该包在四个数字精度中的每一个中包含44个子程序。

从某种意义上说,LINPACK和EISPACK项目都是失败的。我们向NSF提出了研究项目,以“探索生产、测试和传播高质量数学软件所需的方法、成本和资源”。我们从未写过一份报告或论文来阐述这些目标。我们只生产软件。

历史MATLAB

在20世纪70年代和20世纪80年代初,我在新墨西哥州大学教授线性代数和数值分析,并希望我的学生可以轻松访问Linpack和Eispack而不撰写Fortran程序。通过“轻松访问”,我意味着不经过远程批处理和校园中央大型计算机上通常需要的重复编辑编译 - 链接加载过程。

所以我研究了Niklaus Wirth的书算法+数据结构=程序并学会了如何解析编程语言。我用Fortran编写了第一个MATLAB,它是Matrix Laboratory的缩写,Matrix是唯一的数据类型。这个项目是一种爱好,是我学习编程的一个新方面,也是我的学生可以使用的东西。从来没有任何正式的外部支持,当然也没有商业计划。金宝app

第一个MATLAB只是一个交互式矩阵计算器。此启动屏幕快照显示所有保留字和功能。只有71人。要添加另一个函数,必须从我这里获得源代码,编写Fortran子程序,将函数名添加到解析表中,然后重新编译MATLAB。

商业MATLAB

我在斯坦福大学度过了1979-80学年,在那里我教授了数值分析的研究生课程,并向全班同学介绍了这个矩阵计算器。一些学生在学习控制理论和信号处理等科目,而我对此一无所知。不过,矩阵是这些科目中数学的核心AB对学生很有帮助。

杰克·利特尔曾就读于斯坦福大学的研究生工程项目。他的一个参加我课程的朋友给他看了MATLAB,他把它用于自己的工作。

1983年,很少建议创建基于Matlab的商业产品。IBM.®PC在两年前才推出。它的功能几乎不足以运行MATLAB这样的程序,但几乎没有预料到它的发展。他辞掉了工作,买了一台康柏®西尔斯的PC克隆人搬进了斯坦福后面的山丘,在我的鼓励下,他用C语言编写了一个新的扩展版MATLAB。他的朋友史蒂夫·班格特在业余时间开发了新的MATLAB。

PC-MATLAB于1984年12月在拉斯维加斯举行的IEEE决策与控制会议上首次亮相。一年后,用于Unix工作站的Pro-MATLAB紧随其后。

在创建新的和扩展版本时,历史Matlab很少和邦尔特对历史性的Matlab作出了许多重要的修改和改进。最重要的是函数,工具箱和图形。

现代matlab.

在保留矩阵数学中的根源时,Matlab继续发展以满足工程师和科学家的不断变化的需求。关键开发显示在时间表中。在这里,我会详细阐述其中的一些人。

杂散

自商业开端以来,常微分方程的数值解是MATLAB的重要组成部分。ODES也是Simulink的核心金宝app®,MATLAB伴侣产品用于仿真和基于模型的设计。

范德波尔振荡器是一个经典的常微分方程例子。

参数μ是非线性阻尼项的强度。什么时候μ= 0,我们有基本的谐波振荡器。

MATLAB代码将振荡器表示为一对一阶方程。

mu=5;vdp=@(t,y)[y(2);mu*(1-y(1)^2)*y(2)-y(1)];tspan=[0 30];y0=[0.01]';[t,y]=ode23s(vdp,tspan,y0);图(t,y,'.-')图例({'y','dy/dt'})xlabel('t'))

Van der Pol振荡器,具有参数μ设置为5,是一种温和的不易弯曲的微分方程。出于预期,我使用了ode23s解算器;名称中的“s”表示它适用于刚性方程。在绘图中,您可以看到一些步骤的群集,其中解决方案变化很快。非刚性解算器将执行更多步骤。刚性ode解算器使用隐含需要在每个步骤中解决一组同时线性方程的方法。标志性的Matlab Backslash运营商在这里静静地在工作。

数据类型

多年来,MATLAB只有一种数字数据类型:IEEE标准754双精度浮点,以64位格式存储。随着人们开始将MATLAB用于更多的应用程序和更大的数据集,我们提供了更多的数据表示方法。

单精度和整数

金宝app支持2000年代初开始单精度算术,并于2004年由Matlab 7完成。只需要32位储存,单精度切割大号的内存要求。Matlab没有声明,因此单精度变量是通过可执行转换函数获得的。

Matlab7还引入了三种无符号整数数据类型,uint8.,uint16UINT32.;三种有符号整数数据类型,int8,int16int32; 和一个逻辑数据类型,必然的.

稀疏矩阵

稀疏矩阵是在1992年用Matlab4引入的。它们是一种内存效率很高的方法,可以表示几乎没有非零值的非常大的数组。只存储非零元素,以及行索引和指向列开头的指针。MATLAB外观的唯一变化是一对函数,满的。几乎所有运算都同样适用于完整矩阵和稀疏矩阵。稀疏存储方案表示空间中的矩阵与非零条目的数量成比例,并且大多数运算计算的稀疏结果与非零算术运算的数量成比例。

细胞阵列

1996年,Matlab5引入了单元阵列。单元数组是一个索引的、可能是异构的MATLAB对象集合,包括其他单元数组。单元格数组由花括号创建,{}.

单元格数组可以用大括号和圆括号索引。用牙套,c{k}是内容的内容K-th细胞。括号,c(k)是另一个包含指定单元格的单元格数组。请考虑邮箱的集合。方框(k)K-第四个信箱。框{k}邮件在邮局吗K-第四个盒子。

结构

1996年推出了结构和相关的“DOT符号”。用于为小班创建成绩书的此脚本显示了工作中的结构和点表示法。

math101.name = [“爱丽丝琼斯”;“鲍勃史密斯”;“查理·布朗”];math101.grade = [“a”;“b +”;“C”];math101.year = [4;2;3];

要点名,我们需要名单。

disp(Math101.name)“爱丽丝·琼斯”、“鲍勃·史密斯”、“查理·布朗”

改变查理的成绩涉及结构和阵列表示法。

math101.grade(3)=“W”;DISP(MATH101.GRADE)“A”“B +”“W”

对象

2008年制作了对MATLAB面向对象的编程功能的主要增强。创建类可以简化涉及专用数据结构的编程任务或与特定类型的数据交互的大量功能。Matlab类支持函数和操作员金宝app重载,控制访问属性和方法,参考和值语义,以及事件和侦听器。

MATLAB图形系统是面向对象的MATLAB编程方法的一个大型复杂示例。

使MATLAB更可访问:桌面和实时编辑器

MATLAB的第一个版本是简单的终端应用程序。随着时间的推移,我们为图形、编辑和其他工具添加了单独的窗口。这些逐渐使MATLAB更易于使用,特别是对于没有编程经验的用户。影响最大的两个特定功能是桌面和Live Editor。

桌面

MATLAB桌面于2000年推出。下面是一个屏幕截图,显示了它今天的样子。

可见四个面板:当前文件夹查看器(左),工作区查看器(右),编辑器/调试器(顶部中心)和传统的命令窗口(底部中心)。文件查看器和命令历史记录窗口也可以包含在个性化布局中。

任何面板都可以关闭或未被关闭到独立窗口中。

直播编辑

Live Editor于2016年推出,目前仍在快速发展。

描述性文本和MATLAB输入、输出和图形组合在一个交互式文档中,可以导出为HTML、PDF或LaTeX。

并行计算

并行计算工具箱™ 在2004年的超级计算会议上介绍。第二年,在SC05上,比尔·盖茨发表了主题演讲,用MATLAB演示了微软进入高性能计算领域的过程。

工具箱通过在集群中的多台金宝app机器上或在一台机器的多个内核上运行许多MATLAB Worker来支持粗粒度的分布式内存并行。MPI用于底层消息传递。到目前为止,工具箱最流行的功能是并行为了循环命令,帕弗.

工具箱还支持附加图形处理单元(GP金宝appU)中的细粒度共享内存并行性。这里,这个GPUArray.数组让事情开始。

工具盒

现代MATLAB的大部分功能来自专用应用程序可用的工具箱。截至2018a版,共有63个工具箱:

  • 应用程序部署(3)
  • 代码生成(7)
  • 计算生物学(2)
  • 计算金融(8)
  • 控制系统(8)
  • 数据库访问和报告(2)
  • 图像处理与计算机视觉(6)
  • 数学、统计和优化(9)
  • 并行计算(2)
  • 信号处理和无线通信(11)
  • 测试和测量(5)

下一步是什么?

从简单的计算器开始,MATLAB已经走过了漫长的道路。它是一个活生生的生态系统,支持技术计算的所有方面。我们将继续加强现有功能,同时小心添加新功能。我们的目标始终是易于使用、强大和快速。金宝app

发布2018年

下载188bet金宝搏使用的产品

查看相关功能的文章

MATLAB时间线


1984年

PC-MATLAB
快速傅里叶变换
图样


1985年

Pro-Matlab.
控制系统工具箱™


1987年

信号处理工具箱™
杂散


1992

稀疏矩阵
金宝app®


1993

图像处理工具箱™
符号数学工具箱™


1996

单精度
细胞阵列
结构


1999

对象


2000年

桌面
拉帕克


2004年

整数数据类型
功能手柄
并行计算


2008年

物体改进


2010年

GPUS.


2014年

新图形系统


2016年

直播编辑


2017年

高数组与范畴数组