1.1 从Fortran到矩阵实验室:Matlab五十年演化


1.1 从 Fortran 到矩阵实验室:Matlab 五十年演化

本节摘要:Matlab 起源于 1970 年代末 Cleve Moler 为数值分析课程编写的交互式矩阵计算工具,让 不写 Fortran 也能调用 LINPACK 与 EISPACK。本节按时间线梳理它从课堂原型到仿真平台的五个阶段,并对照认识当前版本的工作界面。

一段历史

1976 年前后,Moler 在课堂上反复看到同一幕:学生线性代数的思路没问题,却把大量时间耗在 Fortran 的编译报错和作业提交流程上。他的回应是写一个用 BASIC 起家、后改用 Fortran 实现的解释器,学生敲一行、得一行的结果。1984 年,Moler 与 Jack Little、Steve Bangert 合创 MathWorks,推出第一个商业版 Matlab——那一年它只有 81 个函数,全部围绕矩阵计算。

图 Matlab 五十年演化时间线

图 Matlab 五十年演化时间线

界面的演化逻辑

早期的 Matlab 只有一个命令行窗口。今天安装完 R2023 之后打开,你会看到四个区域,它们各自对应一段演化历史:

界面区域 出现动机 典型用法
命令行窗口 最初的形态,逐行解释执行 试算、查看变量
工作区 变量多了以后需要可视化管理 双击矩阵查看元素
编辑器 脚本出现后的必然产物 写函数、断点调试
当前文件夹 项目复杂后的文件管理 管理脚本与数据

第一次启动时建议做的两件事:在主页设置里把工作目录改到自己的项目文件夹;敲 ver 看版本与已装工具箱清单——后续章节的不少功能依赖特定工具箱。

动手验证一次"历史"

体会 1984 年那 81 个函数的核心体验,只需要三行:

A = [4 1; 2 3]; % 一对方括号就是矩阵 b = [1; 2]; x = A\b % 反斜杠:解线性方程组

输出 x 为列向量,没有编译、没有 main 函数。这五行体验,就是 Matlab 能在四十年里从课堂教具长成工程平台的原始资本:把数学表达式到可运行代码的距离压缩到最短。

💡 关键直觉:Matlab 的每次大版本演进,几乎都在"缩短想法与结果之间的距离"——JIT 让你不必刻意向量化也能跑得不慢,实时脚本让你把文字、公式、代码放进同一篇文档,App 设计器让你不写界面代码也能交付工具。

再看一次带输出对照的完整会话,顺便熟悉命令行窗口的"问即答"节奏。先查环境,再算一个小例子,每一步都立刻有反馈:

ver % 列出当前版本与全部已装工具箱,先确认"手头有什么枪" % 输出形如: % MATLAB Version: 23.2.x.xxx (R2023b) % MATLAB Version 23.2 (R2023b) % Simulink Version 23.2 (R2023b) % Signal Processing Toolbox Version 23.2 (R2023b) ... A = magic(3) % 3 阶魔方阵,元素与行列和都相等;语句不带分号会直接回显 % A = % 8 1 6 % 3 5 7 % 4 9 2 sum(A) % 默认按列求和,得到 1x3 行向量 % ans = % 15 15 15

这段会话里有两个值得注意的细节:语句末尾加分号抑制回显、不加分号立即打印,这是命令行交互的第一开关;magic(3) 这类"自带示例数据"的构造函数(还有 hilbgallery)是快速验证想法的燃料,历史课上 Moler 演示用的正是这类矩阵。对照 1984 年的 81 个函数清单,magichilb 都在册——四十年后我们敲的演示代码,和当年的课堂几乎一样。

版本节点速查

用表格把五个阶段的关键节点钉住,读旧文献或接手遗留代码时能快速定位"这份代码大概写于什么年代":

阶段 代表版本 标志性变化 今天还能感知到的痕迹
课堂原型 1970 年代末 解释器包裹 LINPACK/EISPACK 命令行窗口是默认交互方式
商业化 1984 v1.0 81 个函数、公司成立 A\b 仍是核心语法
生态化 1990 年代 工具箱体系、Simulink 问世 ver 能列出长长一串产品清单
性能化 R2006 前后 JIT 加速、向量化文化成型 老代码里大量 vectorize 风格写法
平台化 R2016 之后 实时脚本、App 设计器、云版本 Live Editor 里代码与文字混排

给代码"验年代"有个实用技巧:看到全篇字符数组拼接、没有一行 string,基本可以判断写于 R2016b 之前;看到 arguments 校验块,则是 R2019b 之后的作品。这种判断力在接手实验室传承代码时很值钱——你能预判它会在哪些新版行为变化上出问题。

排错:第一次启动常见的三类报错

新装环境最常撞见的三个报错,原因和解法各不相同。第一类是"未定义函数或变量",多半是当前文件夹不对,脚本不在搜索路径上,把工作目录切到脚本所在位置即可。第二类是许可证问题,启动时提示授权文件无效,需要检查许可证是否过期、是否绑定了错误的机器。第三类与中文环境有关:早期版本脚本里含中文注释、而系统区域设置不支持时会出现乱码甚至解析错误,R2017b 起默认以 UTF-8 保存脚本,问题大幅缓解,但打开别人发来的老脚本仍可能撞上,编辑器里用"另存为"重新指定编码就能救回来。

边界情况:命令行窗口不是万能记事本

命令行里敲过的命令默认不落盘,关掉会话就消失。想把探索过程留下来,有两个办法:按上方向键翻历史逐条复制,或者从一开始就在脚本里写。更稳妥的做法是开历史记录文件,会话结束时自动把本次敲过的所有命令存成文本,回头整理成脚本的原料就有了。这个习惯的价值在第 2 章会显形——脚本的原始素材,往往就是命令行里被验证过的那十几行。

本节要点回顾

  • 起源:Matlab 是数值库的交互式外壳,先有库、后有语言,这决定了矩阵的中心地位;
  • 演化五阶段:课堂原型 → 商业化 → Simulink 与工具箱生态 → JIT 与向量化 → 平台化与云;
  • 界面即历史:四个工作区各对应一次用户规模扩张;
  • 动手锚点:方括号建矩阵、反斜杠解方程,是贯穿全册的最小操作单元;
  • 版本意识:用 ver 查环境,功能依赖工具箱时先确认授权。

作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U