Matlab 与C++的对比
1 前言
C++和Matlab是我们已经学习过的两门计算机语言,在数学领域上的基本使用中占有十分重要的地位。C++为我们数学更好的解析和掌握打下了基础;matlab是为了解决问题(学术性的、工程上的),得到一个最终(或可优化)的结果,结果可能是一串数字,加以解释则能得到强大的作用。而C++与Matlab本质上的区别是在于C++存在全局变量、结构、枚举、联合等一系列源于C的概念,包含了面向对象和面向过程的双重概念,Malab的特点则是它讲矩阵作为基本存储单元。Matlab里数据存储的基本单元是矩阵,即使一个数内部也是看做一个矩阵。存储在Matlab变量中的值都属于一个类。这些值不仅包括你可能通常会考虑的对象,如时间序列货状态空间对象,也包括双精度数。所有的Matlab数据类型都具有面向对象编程中的类的功能。由于两者都是计算机语言,在基本的语法方面具有相似之处。但毕竟两门语言的开发环境不同,在一些具体的语法方面会有所不同,某些符号在两门语言中可能代表不同的运算。学生一般相继学习这两门语言,很容易对这两门语言的语法发生混淆,例如把C++的语法用在了Matlab 上,程序运行错误而不知错误原因。因此,把这两门语言一些基本
的语法点做出比较显得较有实际意义,也能为学习提供参考,避免在编程方面出现低级错误。
2 Matlab与C++的介绍
Matlab是Mathworks公司推出的数学软件,它将数值分析、矩阵计算、信号处理和图形显示结合在一起,包含大量高度集成的函数可供调用,命令语句功能十分强大,为科学研究、工程设计及众多学科领域提供了一种简洁、高效的编程工具。但是Matlab使用的是解释性语言,大大限制了它的执行速度;源代码的公开不利于算法和数据的保密;局限于Matlab运行环境而不能用于开发商用软件。Visual C++是Windows平台下主要的应用程序开发环境之一,它能方便实现软件开发,开发的系统具有界面友好、执行速度快、易维护和升级等优点。但是在工程计算方面,和Matlab相比编程显得复杂的多。因此实现Matlab混合编程,使两者结合起来,协同工作,必将提高软件开发效率,使所开发的软件具有更高的性能,更大的应用范围,也可以为科学研究和工程技术提供更强的技术支持。
3 数据类型的对比
C++的基本数据类型有bool (布尔型)、char (字符型)、int (整型)、float (浮点型,表示实数)、double (双精度浮点型,简称双精度型)。除了bool 型外,主要有两大类:整数和浮点数,其中有关键字signed (有符号数) 和unsigned (无符号数),short (短数据型) 和long (长数据型) 作为修饰符。bool 型数据也称为逻辑型数据,取值只能是false (假) 或true(真),分别以0 和1 表示。
Matlab 内部只有一种数据格式,即双精度(64 位) 二进制,Matlab 作运算和存储时都用双精度格式[2]。无论什么时候将一个数值赋予一个变量名,Matlab 将自动创建一个double型变量。如果需要改变变量的类型,可以通过format 指令改变数据显示的格式
4 运算符的对比
C++和Matlab 都提供了加减乘除等基本算术运算符、赋值运算符、大于小于等关系运算符以及与或非等逻辑运算符,具体差别如表1-2 所示。
基本算术运算符与赋值运算符的比较 | ||||||
加 | 减 | 乘 | 除 | 取余 | 赋值 | |
C++ | + | - | * | / | % | = |
Matlab | + | - | * | / | mod或rem | = |
关系运算符与逻辑运算符的比较 | ||||||||||
大于 | 小于 | 大于等于 | 小于等于 | 等于 | 不等于 | 与 | 或 | 非 | 异或 | |
C++ | > matlab定义函数表达式 | < | >= | <= | == | != | && | || | ! | ~ |
Matlab | > | < | >= | <= | == | ~= | && | || | ~ | xor |
注意,在C++中,“%”只能用于整形操作数;当“/”用于两整形数据相除时,其结果取商的整数部分,小数部分被自动舍弃。同时C++中有自增(++) 与自减(--) 两个运算符,有“+=,-=,……”等10 种复合运算符,这是Matlab中没有的。需要区分的是在C++中,逻辑非用“!”表示,Matlab 中则用“~”表示。另外,在C++中,“^”表示异或;但在Matlab 中,“^”表示乘方,例如a^2 表示a2。
5 变量的声明与初始化的对比
C++中,变量在使用之前必须先声明其类型和名称,具体形式如下:数据类型变量名1,变量名2,……
在定义一个变量的同时,也可以给它赋初始值,例如“int a=3;”,声明了一个整型的变量a
并赋予初值为3。如果需要计算y=3x,当x=1 时的y 值,可通过以下语句计算:int x=1,y; y=3*x;Matlab 中使用变量前不需要先声明,只需要直接赋值给变量即可。需要注意的是,在C++中,把字符和字符串赋给变量的形
式有所区别。字符实际上是字符常量,是以单引号括起来的一个字符;字符串实际上是字符串常量,是以双引号括起来的字符序列,在内存中存放时末尾会添加‘\0’作为结尾标记。例如:char a=‘c’; //把字符c 赋给变量a char A=“abcd”;//把字符串abcd 赋给变量aMatlab 中对字符和字符串没有明确的区分,都可以通过“a=‘字符串内容’”的形式把字符或字符串赋给变量a。例如:a=‘c’; A=‘abc’;
6 自定义函数的对比
C++中自定义函数的语法形式为:类型标识符函数名(形式参数列表){ 函数实现语句}类型标识符表示返回值类型,函数的返回值由return 语句给出。如果函数没有返回值,则类型标识符用void 表示,不必写出return 语句。在调用函数之前,要先在主调函数中声明函数原型,调用的形式为“函数名(实际参数列表)”。C++中的函数可以与主函数写在同一个源文件中;也可以写成单独的头文件,并把头文件名嵌入主程序。Matlab 的自定义函数通过关键
词function 声明,形式如下:function 返回值列表=函数名(形式参数列表)
函数实现语句Matlab 的函数文件一般另存为一个单独的m 文件,存放在与主调函数文件同一路径下,否则函数不能被调用。保存时,Matlab 系统会自动默认把函数文件保存为文件名与函数名相同的m 文件。Matlab 可定义函数有多个返回值;如果函数没有返回值,则可以直接定义:function 函数名(形式参数列表)函数调用的形式与C++相同,都是通过“函数名(实际参数列表)”调用。
7 循环及选择语句的对比
在C++和Matlab 中,都包括if 和switch 两种选择语句以及for 和while 两种循环语句,其基本形式都是一致的。主要区别的是C++中的语句体需要用“{}”括起,Matlab 中的语句体不需括起,但要以关键词“end”作为循环或选择结构的结束标志。如果需要用for 语句表示循环条件初值i=0,循环终值条件为i<a,用C++表示为:“for (int i=0;i<a;i++)”;由于Matlab 自身以矩阵运算的特点,只需要写成“for i=0:a”,C++中改变循环表达式的语句i++已隐含在“:”中,表示每循环一次i 自增1。如果改变循环表达式的语句为“i+=n”,即每循环一次i 自增n,则用Matlab 可表示为“for i=0:n:a”。
8 输入与输出语句的对比
C++中,数据的输入和输出时通过I/O 流实现的,cin 和cout 是预定义的流类对象。cin 用来处理标准输入,即键盘输入;cout 用来处理标准输出,即屏幕输出。键盘输入的格式为:“cin>>变量1>>变量2……”,表示要求从键盘上输入一个或多个变量,多个变量之间以空格分开。变量的类型可以是数字或者字符,需要在cin 语句之前进行声明。例如:int a,b; cin>>a>>b;该组语句把从键盘输入的两个整型数依次赋给变量a 和b。屏幕输出的格式为:“cout<<表达式<<表达式……”,输出多个数据项。插入运算符“<<”之后可以加双引号(“ ”)括起的字符串或任意复杂的表达式,系统会把字符串输出或自动计算出表达式的值并输出。例如:int a=1,b=2; cout<<“a+b=”<<a+b;该组语句的输出为“a+b=3”,即把字符串“a+b=”和表达式a+b 的值依次输出。Matlab 的键盘输入通过函数“input”实现,具体用法为“a=input ‘( 输入提示’)”,把用户从键盘输入的数据赋给变量a。如果希望输入是一个数组或矩阵,则只需把输入内容用中括号([ ]) 括起,系统把默认把输入视为数组或矩阵。例如:运行语句“a=input ('a=')”,用户输入“a= [1 2;3 4]”,运行结果为:a = 1 2
3 4 如果希望输入内容是一个字符串,则要在input 语句中加
上字符的限制符“‘s’”,形式为“a=input (‘输入提示’,‘s’)”。例如:运行语句“a=input ('a=',‘s’)”,用户输入“a=Today is Sunday.”,运行结果为:“a = Today is Sunday.”。在输入字符串时以单引号引起输入的内容,系统也可以把输入内容识别为字符串。Matlab 的屏幕输出可通过disp 和fprintf 语句实现。
9 结语
从基本语法结构、基本数据类型、变量的声明与初始化、运算符、循环及选择语句、自定义函数、系统函数、基本输出与输出语句8 个基本方面讨论了C++和 Matlab 语言的异同,指出了在编程过程中容易出现语法错误之处,由于Matlab 是一个非常好用的工具箱,他与c语言的最大区别在于内置了非常多的数值算法。最简单的比如矩阵相乘,或解方程组等等,matlab用一个函数调用就直接搞定, 但是用c++的话要你自己去编这个函数。matlab编程要比c++简单很多,它更相当于是一个高级的计算器,比较容易上手。但是做大规模程序的话,还是c++强大些,再说它可以直接调用matlab的函数dll 。因此,推荐运用Matlab来解决我们日常接触的数学问题和数学模型。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论