matlab 本身使用的是自研的 matlab 编程语言,官方全称是 Matrix Laboratory 语言,也就是矩阵实验室语言,它属于解释型高级数值计算语言,专门针对矩阵运算科学计算仿真建模做了原生优化,很多人容易混淆两个概念,一个是用户写代码使用的 matlab 脚本语言,另一个是 matlab 这个软件本身底层实现代码,软件内核核心部分是用 C 语言还有少量 C++ 编写,部分模块还会用到 Fortran,所以要区分开,用户编写 m 文件代码,调用的是 matlab 自研脚本语言,而软件本体底层引擎是 C C++ Fortran 开发。这个语言最大特点就是默认所有变量都是矩阵,不需要提前声明变量类型,语法简洁,矩阵运算可以直接书写表达式,不需要像 C 语言那样写多层循环,非常适合工科学生做数学建模控制系统仿真信号处理,同时 matlab 还支持扩展接口,可以调用 C C++ Fortran Python 代码,也可以生成 C 代码部署到单片机嵌入式平台。想要完整理解这套体系,需要分清脚本语言解释执行机制,底层内核实现,以及混合编程相关的扩展语言,不要把底层开发语言和用户编程语言混为一谈。
两层语言体系对照
| 类别 | 语言类型 | 说明 |
|---|---|---|
| 用户编程语言 | matlab 自研解释型语言 | 也就是 m 语言,后缀 m 的脚本和函数文件 |
| 软件底层内核 | C 语言 C++ Fortran | matlab 引擎矩阵运算库图形渲染核心算法库 |
| 扩展混合编程 | C C++ Fortran Python | 通过 mex 接口 代码生成 外部调用实现互通 |
matlab 脚本语言核心特点
1 解释执行,代码运行的时候不需要提前整体编译成可执行文件,逐行解析执行,调试方便,但是大规模循环运算速度会比编译型 C 语言慢
2 动态类型,变量不需要提前声明类型,赋值的时候自动识别,默认基础类型是 double 矩阵
3 原生矩阵优先,语法设计围绕矩阵设计,矩阵加减乘除求逆特征值都有内置运算符,这也是这个语言最核心优势
4 支持脚本文件 m 文件,函数文件,类对象,新版 matlab 还支持面向对象编程语法
5 配套生态,内置工具箱,比如 simulink 控制系统工具箱信号处理工具箱,全部都是基于这套 matlab 语言封装
底层内核相关深度说明
matlab 核心矩阵运算底层大量调用优化后的 BLAS 和 LAPACK 数值库,这些库本身就是 Fortran 和 C 实现,所以 matlab 做矩阵乘法的时候,并不是用 matlab 脚本本身实现算法,而是底层直接调用高性能数值库,这也是 matlab 矩阵运算速度很快的根本原因。图形界面部分,新版 matlab 图形渲染模块大量使用 C++ 开发,负责窗口绘图界面交互。mex 机制就是专门用来打通 matlab 语言和 C C++,用户可以编写 C 代码编译成 mex 文件,matlab 运行的时候直接调用,用来弥补 matlab 解释执行循环慢的短板。另外 matlab Coder 可以把 matlab 语言代码转成标准 C 代码,用于嵌入式部署,这个是代码转换,不是说 matlab 本身就是 C 语言。
常见误区区分
误区一 matlab 就是 C 语言
纠正,用户写的 m 代码不是 C 语言,只是底层内核是 C 实现,语法规则和 C 差别很大
误区二 matlab 是编译语言
纠正,默认运行模式是解释执行,只有 mex 或者代码生成之后才会编译成机器码
误区三 simulink 是另外一种独立语言
纠正,simulink 里面的 matlab function 模块,内部写的仍然是 matlab 这套自研语言,simulink 本身是图形化建模环境,底层引擎依旧复用 matlab 内核
综合总结,日常学习编程的时候,matlab 用的是它自研的 matlab 矩阵解释型语言,也就是 m 语言,软件本身底层引擎由 C C++ Fortran 实现,同时支持和其他多种语言混合调用,学习的时候优先掌握 matlab 自研脚本语言,性能瓶颈场景再使用 mex 或者代码生成对接底层编译语言。
【常见问题】
问题 1,matlab 用的什么语言写的 m 文件
回答 1,matlab 用的是自研 matlab 语言编写 m 文件,属于解释型高级数值计算语言,专门优化矩阵运算,和 C 语言语法并不相同。
问题 2,matlab 用的什么语言做底层内核
回答 2,matlab 底层内核主要是 C 语言搭配 C++ 还有 Fortran 实现,矩阵运算底层还调用 BLAS LAPACK 这类高性能数值库。
问题 3,matlab 用的什么语言可以和 Python 互通吗
回答 3,matlab 本身是自研解释语言,官方提供接口支持和 Python 互通,可以在 matlab 里面调用 Python 脚本,也可以在 Python 里面调用 matlab 引擎。
问题 4,matlab 用的什么语言可以生成 C 代码吗
回答 4,matlab 自研语言可以通过 matlab coder 转换生成 C 代码,这个属于代码生成转换,并不是 matlab 本身就是 C 语言。
【免责申明】
本文内容基于 matlab 公开技术资料整理,仅用于 matlab 用的什么语言相关知识科普,不同版本 matlab 底层实现细节会随版本迭代调整,不替代 matlab 官方技术文档,具体技术细节请以 MathWorks 官方说明为准。
本文来自作者[科创内参局]投稿,不代表绮畅科技网立场,如若转载,请注明出处:https://www.lorte.cn/bkjy/202611/3393.html
评论列表(4条)
我是绮畅科技网的签约作者“科创内参局”!
希望本篇文章《matlab 用的什么语言 底层与脚本体系解析》能对你有所帮助!
本站[绮畅科技网]内容主要涵盖:教育咨询,知识百科
本文概览:matlab 本身使用的是自研的 matlab 编程语言,官方全称是 Matrix Laboratory 语言,也就是矩阵实验室语言,它属于解释型高级数值计算语言,专门针对矩阵运算科学计算仿真建模做了原生优化,很多人容易混淆两个概念,一个是用户写代码使用的 matlab 脚本语言,另一个是 matlab 这个软件本身底层实现代码,软件内核核心部分是用 C 语言还有少量 C++ 编写,部分模块还会用到 Fortran,所以要区分开,用户编写 m 文件代码,调用的是 matlab 自研脚本语言,而软件本体底层引擎是 C C++ Fortran 开发。这个语言最大特点就是默认所有变量都是矩阵,不需要提前声明变量类型,语法简洁,矩阵运算可以直接书写表达式,不需要像 C 语言那样写多层循环,非常适合工科学生做数学建模控制系统仿真信号处理,同时 matlab 还支持扩展接口,可以调用 C C++ Fortran Python 代码,也可以生成 C 代码部署到单片机嵌入式平台。想要完整理解这套体系,需要分清脚本语言解释执行机制,底层内核实现,以及混合编程相关的扩展语言,不要把底层开发语言和用户编程语言混为一谈。