第二章 Matlab 基础运算及函数、数据类型
文章目录
前言
本节将简要介绍下matlab中的基础计算、函数、数据类型。
一、基础运算
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
Matlab可以作为你的计算器使用,进行初级的数值计算,也可以进行求微积分、极限、符号计算等高级运算。
matlab的运算符包括 +、 - 、/ 、x、 ^
- 加法运算,+,在命令行输入2022+1,点击回车,就会给你输出执行结果。
>> 2022+1
ans =
2023
>>
-
减法运算,-,乘除法运算类似,下面就不一一演示了。
-
除法运算,/
-
乘法运算,x
-
幂运算,要注意的是幂运算是这种形式 底数^幂次
>> 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、圆周率π的表示方法
在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),第二个例子为求解log28:
>> 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里的基础运算与函数使用,不同的数据类型,要想使用的熟练还是要像第二节计算表达式那样多多练习哦。