技术文章和通讯

MATLAB简史

克利夫·莫尔(Cleve Moler), MathWorks出版社


第一个MATLAB®不是一种编程语言;这是一个简单的交互式矩阵计算器。没有程序,没有工具箱,没有图像。没有ode或fft。

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

数学的起源

第一个版本的MATLAB的数学基础是由j·h·威尔金森和他的18位同事发表的一系列研究论文,发表于1965年至1970年,后来被收集在自动计算手册,第二卷,线性代数,由威尔金森和C. Reinsch编辑。这些论文提出了求解矩阵线性方程和特征值问题的算法,并在Algol 60中实现。

EISPACK和LINPACK

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

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

LINPACK起源于Fortran;它没有涉及到对Algol的翻译。这个程序包包含44个子程序,每个子程序有4个数字精度。

从某种意义上说,LINPACK和EISPACK项目是失败的。我们已经向美国国家科学基金会提出了研究项目,以“探索生产、测试和传播高质量数学软件所需的方法、成本和资源”。我们从未写过关于这些目标的报告或论文。我们只生产软件。

历史性的MATLAB

在20世纪70年代和80年代初,我在新墨西哥大学教授线性代数和数值分析,我希望我的学生能够轻松地使用LINPACK和EISPACK,而不需要编写Fortran程序。所谓“容易访问”,我指的是不需要进行远程批处理和重复的编辑-编译-链接-加载-执行过程,这在校园中央主机计算机上通常是必需的。

我研究了尼克劳斯·沃斯的书算法+数据结构=程序并学会了如何解析编程语言。我用Fortran编写了第一个matlab——Matrix laboratory的首字母缩写——矩阵作为唯一的数据类型。这个项目是我的一种爱好,是我学习编程的一个新方面,也是我的学生使用的东西。从来没有任何正式的外部支持,当然也没有商业计划。金宝app

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

商业MATLAB

我在斯坦福大学度过了1979-80学年,在那里我教授了数值分析的研究生课程并介绍了矩阵计算器。有些学生正在学习控制理论和信号处理等课程,而我对此一无所知。矩阵是这些学科数学的核心,MATLAB对学生们立刻很有用。

商业MATLAB

杰克·利特尔曾在斯坦福大学读工程研究生。他的一个上过我课程的朋友向他展示了MATLAB,他将其应用到自己的工作中。

1983年,Little提出基于MATLAB开发一个商业产品。IBM®个人电脑在两年前才推出。它的功能还不足以运行像MATLAB这样的程序,但利特尔预见到了它的发展。他辞掉了工作,买了一台康柏电脑®在西尔斯的电脑克隆,搬到斯坦福后面的山上,在我的鼓励下,用c写了一个新的扩展版本的MATLAB。一个朋友,Steve Bangert,在他的业余时间研究新的MATLAB。

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

Little和Bangert在创建新的扩展版本时,对Historic MATLAB做了许多重要的修改和改进。最重要的是功能、工具箱和图形。

现代MATLAB

在保留其在矩阵数学中的根的同时,MATLAB继续发展,以满足工程师和科学家不断变化的需求。时间表中显示了关键的发展。在这里,我将详细说明其中一些。

常微分方程

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

范德堡尔振荡器是一个经典的ODE例子。

的参数μ为非线性阻尼项的强度。当μ= 0时,我们有基本谐振子。

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

μ= 5;VDP = @(t,y) [y(2)];μ* (1 y (1) ^ 2) * y (2) - y (1)];Tspan = [0 30];Y0 = [0 0 0]';[t、y] = ode23s (vdp, tspan y0);情节(t y '。')传说({' y ', ' dy / dt '})包含(“t”)

范德堡尔振荡器,带参数μ设为5,为轻度僵硬的微分方程。在预期中,我使用ode23s解算器;名称中的“s”表示它用于刚性方程。在图中,您可以看到一些步骤的集群,其中的解决方案变化迅速。一个非僵硬的解算器会采取更多步骤。一个僵硬的ode求解器使用隐式的方法要求在每一步解一组联立线性方程组。标志性的MATLAB反斜杠运算符在这里悄然工作。

数据类型

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

单精度与整数

金宝app对单精度算法的支持始于21世纪初,并于2004年由MATLAB 7完成。只需要32位存储,单精度将大阵列的内存需求削减了一半。MATLAB没有声明,单精度变量由可执行转换函数获得。

MATLAB 7还介绍了三种无符号整数数据类型,uint8uint16,uint32;三种有符号整数数据类型,int8int16,int32;一种逻辑数据类型,逻辑

稀疏矩阵

1992年matlab4引入了稀疏矩阵。它们是一种节省内存的方法,用于表示具有很少非零值的非常大的数组。只存储非零元素,以及行索引和指向列开头的指针。唯一改变MATLAB外观的是一对函数,稀疏的完整的.几乎所有的运算都同样适用于满矩阵和稀疏矩阵。稀疏存储方案在空间中表示一个与非零项的数量成比例的矩阵,并且大多数计算稀疏的操作在时间上的结果与非零的算术操作的数量成比例。

细胞数组

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

单元格数组可以用花括号和圆括号来索引。牙套,c {k}内容是kth细胞。用括号,c (k)是另一个包含指定单元格的单元格数组。想象一组邮箱。箱(k)kth邮箱。盒子{k}邮件在吗kth盒子。

结构

结构和相关的“点表示法”在1996年被引入。这个用于创建小班成绩册的脚本显示了结构和点表示法的工作。

Math101.name = ["Alice Jones";“鲍勃·史密斯”;“查理·布朗”);Math101。级=[“A”;“B +”;“C”);Math101。年= [4;2; 3];

要点名,我们需要一份名单。

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

改变Charlie的分数涉及到结构和数组表示法。

Math101.grade(3) =“W”;Math101.grade: " A " " B " + " W "

对象

MATLAB面向对象编程能力的主要增强是在2008年完成的。创建类可以简化涉及专用数据结构或与特定类型数据交互的大量函数的编程任务。MATLAB类支持函数和操作符金宝app重载、对属性和方法的受控访问、引用和值语义以及事件和监听器。

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

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

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

桌面

MATLAB桌面于2000年推出。这里有一个截图,展示了它现在的样子。

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

任何面板都可以关闭或脱离到一个独立的窗口。

住编辑器

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

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

并行计算

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

工具箱支持粗粒度的分布式金宝app内存并行性,方法是在集群中的几台机器上运行多个MATLAB工作程序,或者在一台机器上运行多个核心程序。MPI用于底层消息传递。到目前为止,工具箱最流行的特性是并行循环命令,parfor

工具箱还支持附加图形处理单元(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
FFT
图形


1985

Pro-MATLAB
控制系统工具箱™


1987

信号处理工具箱™
常微分方程


1992

稀疏矩阵
金宝app®


1993

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


1996

单精度
细胞数组
结构


1999

对象


2000

桌面
LAPACK


2004

整数数据类型
函数处理
并行计算


2008

对象的改进


2010

gpu


2014

新的图形系统


2016

住编辑器


2017

高数组和分类数组