第二章 Matlab 基础运算及函数、数据类型
前言
本节将简要介绍下matlab中的基础计算、函数、数据类型。
一、基础运算
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 Matlab可以作为你的计算器使用,进行初级的数值计算,也可以进行求微积分、极限、符号计算等高级运算。 matlab的运算符包括 + 、 - 、/ 、x 、 ^
加法运算,+,在命令行输入2022+1,点击回车,就会给你输出执行结果。
> > 2022 + 1
ans =
2023
> >
> > 2024 - 1
ans =
2023
幂次运算如下
> > 2 ^ 3
ans =
8
二、基础函数
1.基础函数
基础函数包括三角函数,自然指数,开方函数,对数函数等
三角函数,包括sin、cos、tan等常用三角函数,具体代码如下:
需要注意的是,在matlab里默认的是弧度值,当你想要计算sin(90°)的时候,需要用π转换,下面的例子就是计算90弧度值与90°的两个表达式
> > sin ( 90 )
ans =
0.893996663600558
> > sin ( pi / 2 ) > >
ans =
1
开方函数,根号的使用以及n次根号的使用,有sqrt、power、nthroot三种方式,其中power可以用来求负数的n次根。
下面是求解根号9的结果与27的三次开方结果,-27的三次开方结果的代码:
> > sqrt ( 9 )
ans =
3
> > power ( 27 , 1 / 3 )
ans =
3
> > nthroot ( 27 , 3 )
ans =
3
> > power ( - 27 , 1 / 3 )
ans =
1.5 + 2.59807621135332i
在matlab里,自然指数e为exp,但是当你想用的时候要用exp(1),代表e的1次方。圆周率π为pi:
> > exp ( 1 )
ans =
2.71828182845905
> > pi
ans =
3.14159265358979
matlab中对数函数,对数函数的用法,包括log与ln。
在matlab里,log就是以自然指数为底的对数函数,也就是loge (x),下面是指数函数的用法,第一个例子为求解ln(e),第二个例子为求解log2 8:
> > log ( exp ( 1 ) )
ans =
1
> > log2 ( 8 )
ans =
3
2.练习
让我们来做一个练习,计算一下比较复杂的表达式:
1.求解esin(π) 2求解cos(
(
1
+
2
+
3
)
3
5
\sqrt{\frac{(1+2+3)^3}{5}}
5 ( 1 + 2 + 3 ) 3
)
代码如下:
> > exp ( sin ( pi ) )
ans =
1
> > cos ( sqrt ( ( 1 + 2 + 3 ) ^ 3 / 5 ) )
ans =
0.958390904529822
三、数据类型
本节介绍一下matlab中所使用的数据类型,包括布尔值、字符串、列表、元胞数组、结构体、函数。
3.1特殊变量
matlab里有一些特殊变量,包括如下几种:
ans 存储计算结果的变量,当你在敲下回车键的时候,计算的结果就存在默认的ans里,可以通过键入ans的方式显示计算结果。
i,j 复数变量,如果你想表示复数,那就要用到i和j了,例如5+3*i。
eps 无穷小,在matlab里用eps代表无穷小,实际数值是2.2204e-016
NaN 非数据(Not a Number),代表非数
3.2调用优先级
以下图中代表matlab的调用优先级,自定义变量>内置函数>子函数>私有函数。 常用命令:
clc 清空命令行窗口 clear 清空工作区所有变量 who 显示工作区有哪些变量
3.3.1数组
下面我们讲一下常规使用的数据类型,从最重要的数组类型开始。 matlab中的向量计算是要符合向量运算规则的,以下为向量运算示例:
> > a= [ 1 2 3 4 ] 定义1 * 4 的行向量
a =
1 2 3 4
> > b= [ 1 ; 2 ; 3 ; 4 ] 定义4 * 1 的列向量
b =
1
2
3
4
> > a* b 向量内积,结果为常数
ans =
30
> > b* a 向量运算,结果为矩阵
ans =
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
以下是matla中矩阵的索引方式,首先要注意的是,matlab中变量的位置索引是从1开始的,不像大多数编程语言的0开始。
> > A= [ 1 21 6 ; 5 17 9 ; 31 2 7 ] 定义一个3 * 3 的矩阵A
A =
1 21 6
5 17 9
31 2 7
> > A ( 8 ) 坐标索引,从上往下,从左往右,第8 个元素的值
ans =
9
> > A ( [ 1 3 5 ] ) 坐标索引,从上往下,从左往右,第1 、3 、5 个元素的值
ans =
1 31 17
> > A ( [ 1 3 ; 1 3 ] ) 坐标索引,结果为用新元素创建的新的矩阵。从上往下,从左往右,第1 、3 、1 、3 个元素的值
ans =
1 31
1 31
> > A ( 3 , 2 ) 坐标索引,位置处于第3 行,第2 列的元素
ans =
2
> > A ( [ 1 3 ] , [ 1 3 ] )
坐标索引,位置处于第1 行,第1 列的元素,第1 行,第3 列的元素,第3 行,第1 列的元素,第3 行,第3 列的元素
ans =
1 6
31 7
> >
matlab的强大之处还在于它的切片索引,包括行切片与列切片。
> > A= [ 1 21 6 ; 5 17 9 ; 31 2 7 ] 定义一个3 * 3 的矩阵
A =
1 21 6
5 17 9
31 2 7
> > A ( 1 : 2 ) 对第一列的位置为1 到2 的元素切片。
ans =
1 5
> > A ( 1 , : ) 切片第一行元素,": "代表所有元素
ans =
1 21 6
> > A ( : , 2 ) 切片第一列元素,": "代表所有元素
ans =
21
17
2
matlab的字符串索引,以下示例为把a字符串从第二个元素切到第八个元素,其中步长为2.
> > a= 'qwertyuio'
a =
'qwertyuio'
> > a ( 2 : 2 : 8 )
ans =
'wryi'
> > s= 'a' : 2 : 'z'
s =
'acegikmoqsuwy'
> >
3.3.2结构体
matlab中有一种数据类型很强大,那就是结构体(struct),下面我们用定义一个学生体结构,来解释结构体数据类型的性质。
student. name= '张三'
student. id= 1
student. number= 12345
student. grade= [ 78 , 56 , 42 ; 99 , 80 , 55 ]
student
student =
包含以下字段的 struct:
name: '张三'
id: 1
number: 12345
grade: [ 2 ×3 double]
如上所示,我们定义了一个结构体数据叫student,其中包含了四个属性,分别是姓名,id,手机号,成绩。由上可见,我们很简单的就定义了包含多个属性的一个数据,并且属性的类型也可以是整数,字符串,数组等基础类型。结构体类型很强大,他也可以层层包含,也可以包含函数句柄等数据类型。
3.3.3元胞数组
元胞数组也是matlab中的一种基础类型,可以用{}定义一个元胞数组,与数组不同的地方是,元胞数组中的数据可以是不同类型的,我们用以下代码来演示
> > A ( 1 , 1 ) = { [ 1 2 3 ; 2 3 4 ; 2 3 4 ] }
A =
1 ×1 cell 数组
{ 3 ×3 double}
> > A ( 1 , 2 ) = { 'Ane Smith' }
A =
1 ×2 cell 数组
{ 3 ×3 double} { 'Ane Smith' }
> > A ( 2 , 1 ) = { 1 + 6i }
A =
2 ×2 cell 数组
{ 3 ×3 double } { 'Ane Smith' }
{ [ 1 + 6i ] } { 0 ×0 double }
> > A ( 2 , 2 ) = { 1 : 1 : 10 }
A =
2 ×2 cell 数组
{ 3 ×3 double } { 'Ane Smith' }
{ [ 1 + 6i ] } { 1 ×10 double}
> > A
A =
2 ×2 cell 数组
{ 3 ×3 double } { 'Ane Smith' }
{ [ 1 + 6i ] } { 1 ×10 double}
> >
3.3.4布尔值
布尔值就是逻辑值,我们用示例来说明,布尔值的取值只有0跟1。
str =
'abcd'
> > str== 'a'
ans =
1 ×4 logical 数组
1 0 0 0
这里我介绍一个matlab中常用的字符串替换的方法,如下所示,如何找到字符串str中为‘a’的地方,然后把它替换成‘Z’,可以用下面的一句代码实现。
> > str= 'abcd'
str =
'abcd'
> > str ( str== 'a' ) = 'Z'
str =
'Zbcd'
好啦,以上就是matlab初级教程第二课要讲的内容,本文仅仅简单介绍了matlab里的基础运算与函数使用,不同的数据类型,要想使用的熟练还是要像第二节计算表达式那样多多练习哦。