第二章 MATLAB基础
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6
MATLAB 中还有多种取整函数,可以用不同的策略把 浮点小数转换成整数,如下表所示
函数 round(a) 说明 向最接近的整数取整,小数 部分是 0.5 时向绝对值大的方 向取整 向0方向取整 举例 round(4.3)结果为4 round(4.5)结果为5 fix(4.3)结果为4 fix(4.5)结果为4 floor(4.3)结果为4 floor(4.5)结果为4
17
常量(特殊函数)
ans
pi
含义
用于存储计算结果的默认变量名
圆周率 的双精度表示
i 或j Inf或 inf
用于复数单位,即 i2=j2=-1 无穷大,前面可加+或- 非数值量,产生于0/0、无穷大 /无穷大
NaN
eps
date Realmin或realmin Realmax或 realmax version
2.1.1数值型数据 1) 整形 不同的整数类型所占用的位数不同,因此所能表示 的数值范围不同,在实际应用中,应该根据需要的数 据范围选择合适的整数类型。有符号整数类型使用一 位来表示正负,因此表示的数据范围和相应的无符号 整数类型不同。 由于MATLAB中数值的默认存储类型是双精度 浮点类型,因此,必须通过下表中列出的转换函数 将双精度浮点数值转换成指定的整数类型。
5
>> whos Name Size x 1x1 xx 1x1 y 1x1 yy 1x1 z 1x1 zz 1x1
Bytes Class 8 double 4 int32 8 double 4 int32 8 double 4 int32
【分析】从最后的 whos 命令结果中可清晰地看出 x 、 y、 z 三个变量的数据类型全是系统默认的双精度浮点型 ( double ) , 而 xx 、 yy 、 zz 的数据类型全是有符号的 32 位整形(int32)
%变量a是字符串型的数据
>> pi*2 %表达式的值没给任何自定义变量时, 就送给系统特殊变量ans ans = 6.2832
24
2.3 标量、向量、矩阵与数组
标量、向量、矩阵和数组是MATLAB运算中涉及的一 组基本运算量。它们各自的特点及相互间的关系可以 描述如下。
25
1)数组不是一个数学量,而是一个用于高级语言程 序设计的概念。如果数组元素按一维线性方式组织 在一起,那么称其为一维数组。一维数组的数学原 型是向量。 如果数组元素分行、列排成一个二维平面表格,那 么称其为二维数组。二维数组的数学原型是矩阵。
3
数据类型转换函 数 uint8 uint16 uint32 uint64 int8 int16 int32 int64
说 明 无符号8位整数 无符号16位整数 无符号32位整数 无符号64位整数 有符号8位整数 有符号16位整数 有符号32位整数 有符号64位整数
字节数 1 2 4 8 1 2 4 8
第2章 MATLAB基础
2.1 MATLAB数据类型 MATLAB数值型数据划分成整型和浮点型的用意和C 语言有所不同。MATLAB的整型数据主要为图像处理 等特殊的应用问题提供数据类型,以便节省空间或提 高运行速度。对一般数值运算,绝大多数情况是采用 双精度浮点型的数据。 具体的数据类型如下:
1
2
当MATLAB将矩阵引入作为基本运算量后,上述局 面改变了。MATLAB不仅实现了矩阵的简单加、减、 乘、除运算,而且许多与矩阵相关的其他运算因此 大大简化。 如A=[1 2;3 4] B=[5 6;7 8]这是两个同阶的2×2 矩阵,因此在MATLAB中,可将它们看成两个常量 进行诸如 A+B , A - B , A*B , A/B 这样一些算术运 算
取值范围 0~ 255 0~ 65535 0~ 4294967295 0~ 1.8447e+19 -128~ 127 -32768~32767 -2147483648 ~2147483647 -9.2234e+18~9.2234 e+18
4
【例 2.1】通过转换函数创建整数类型 >> x=102; >> y=102.49; >> z=102.5; >> xx=int32(x) xx = 102 >> yy=int32(y) yy = 102 >> zz=int32(z) zz = 103
容错量,非常接近于0,计算机上的值为 2-52
当前日期
Matlab所能表示实数的最小绝对值 Matlab所能表示实数的最大绝对值 Matlab版本信息 如8.3.0.532 (R2014a)
18
【例 2.6】显示符号常量eps,realmin,realmax的值 >> eps ans = 2.2204e-16 >> realmin ans = 2.2251e-308 >> realmax ans = 1.7977e+308
27
3 )向量是一个数学量,一般高级语言中也未引入, 它可视为矩阵的特例。从MATLAB的工作区可以查 看到:一个 n 维的行向量是一个 1 × n 阶的矩阵,而 一个n维的列向量则当成n×1阶的矩阵。 如A=[1 2 3 4]就是一个4维的行向量。也可看成是 一个一维数组,还要看成是一个1×4阶的矩阵。
double
单精 度
32(4)
0~22位表示小数部分, 1.1755e-38 23 ~ 30 位表示指数部分, 3.4028e+38 31位表示符号( 0为正, 1为负)
~
single
9
【例2.3】浮点数转换函数的应用。 >> clear %将内存中的变量清掉 >> x=uint32(210);y=single(32.356);z=15.254; >> xy=x*y %错误的运算式 错误使用 .* 整数只能与相同类的整数或标量双精度值组合使用。 %系统提示的错误原因 >> xz=x*z xz = 3203
ቤተ መጻሕፍቲ ባይዱ
fix(a)
floor(a)
向不大于 a 的最接近的整数 取整
ceil(a)
向不小于 a 的最接近的整数 取整
ceil(4.3)结果为5 ceil(4.5)结果为5
7
数据类型参与的数学运算与 MATLAB 中默认的双精度 浮点运算不同。当两种相同的整数类型进行运算时, 结果仍然是这种整数类型;当一个整型数值与一个双 精度浮点类型数值进行数学运算时,计算结果是这种 整数类型,取整采用默认的四舍五入方式。 【注意】两种不同的整数类型之间不能进行数学运算, 除非提前进行强制转换。 【例2.2】整数类型数值参与的运算。 >> x=uint16(103.45)*uint16(20.7) x= 2163 >> x=uint16(103.45)*20.7 x= 2132 8 >> x=uint16(103.45)*uint32(20.7) %错误的运算式
28
4 )标量的提法也是一个数学概念,但在 MATLAB 中, 一方面可将其视为一般高级语言的简单变量来处理, 另一方面又可把它当成1×1阶的矩阵,这一看法与矩 阵作为MATLAB的基本运算量是一致的。 如A=1就是一个标量,也就是一般的简单变量,同时 也可将它看成一个1×1阶的矩阵。
29
5 )在 MATLAB 中,二维数组和矩阵其实是数据结构 形式相同的两种运算量。二维数组和矩阵的表示、建 立、存储根本没有区别,区别只在于它们的运算符和 运算法则不同。 例如,向命令窗口中输入A=[1 2; 3 4]这个量,实际上 它有两种可能的角色:矩阵 A 或二维数组 A 。这就是 说,单从形式上是不能完全区分矩阵和数组的,必须 再看它使用什么运算符与其他量之间进行运算。
10
>> whos Name Size x 1x1 xz 1x1 y 1x1 z 1x1
Bytes Class 4 uint32 4 uint32 4 single 8 double
Attributes
11
3)复数 复数是对实数的扩展,每一个复数包括实部和虚部两 部分。MATLAB中默认用字符 i或者j表示虚部标识。 创建复数可以直接输入或者利用complex函数。 MATLAB中还有多种对复数操作的函数,如下表所示
19
【例2.7】创建无穷量和非数值量。 >> clear >> x=1/0 %产生正无穷大 x= Inf >> y=log(0) %产生负无穷大 y= -Inf >> z=0/0 %产生非数值量 z= NaN
20
2.2.2变量
变量是在程序运行中值可以改变的量,变量由变量 名来表示。在 MATLAB 中,变量名的命名有自己的 规则,可以归纳成如下几条。 ●变量名必须以字母开头,且只能由字母、数字或 者下划线 3 类符号组成,不能含有空格和标点符号 (如( ),。%)等。 ●变量名区分字母的大小写。例如,“ name ”和 “Name”是不同的变量。 ●变量名不能超过 63 个字符,第 63 个字符后的字符 被忽略。对于MATLAB 6.5以前的版本,变量名不能 超过31个字符。 ●关键字不能作为变量名。
15
在Matlab中,字符串常量采用一对半角单引号括起来, 字符串常量可包括数字,字母和其它符号。 对于矩阵来说,如[1 2;3 4],则可认为是矩阵常量, 当然这是个 2x2 矩阵,矩阵常用半角中的括号 “ [ ” 和“]”括起来。
16
除此之外在MATLAB中,有一类常量是由系统默认 给定一个符号来表示的。如pi,它代表圆周率π这个 常数,即3.141 592 6…。类似于C语言中的符号常 量,这些常量如下表所示,有时又称为系统预定义 的变量。
13
>> whos Name Size a 1x1 x 1x1 y 1x1 z 1x1
Bytes Class Attributes 16 double complex 4 int32 4 int32 8 int32 complex
14
2.2MATLAB的常量及变量
2.2.1常量 常量是程序语句中取不变值的那些量。如表达式 y=0.314*x,其中就包含一个0.314这样的数值常数,它 便是一个数值常量。而在另一表达式s='Hello'中,单引 号内的英文字符串“Hello”则是一个字符串常量。
像 A= [1 2 3 4]就是一个含有 4个元素一维数组,而 B=[1 2;3 4]一个二行二列的二维数组 如果元素在排成二维数组的基础上,再将多个行、 列数分别相同的二维数组叠成一个立体表格,便形 成三维数组。依此类推,便有了多维数组的概念。
26
2)矩阵是一个数学概念,一般高级语言并未将其作 为基本的运算量,但MATLAB是个例外。 一般高级语言是不认可将两个矩阵视为两个简单变 量而直接进行加、减、乘、除的,要完成矩阵的四 则运算必须借助于循环结构。
22
【例 2.8】变量赋值 >> a=3.14 a= 3.1400 >> class(a) %函数class用来是判断变量数据类 型的 ans = double %变量a是双精度的浮点型数据
23
>> a='hello!' hello! >> class(a) ans = char
%变量a重新赋值
2)浮点型 MATLAB 中提供了单精度浮点数类型和双精度浮 点数类型。它们在存储位宽、各数据位的用处、 表示的数值范围、转换函数等方面都不同,如下 表所示。
类型 所占位宽(字 节) 64(8) 各数据位用处 取值范围 转换函数
双精 度
0~51位表示小数部分, 2.2251e-308 52 ~ 62 位表示指数部分, ~1.7977e+308 63位表示符号( 0为正, 1为负)
21
作为一种编程语言, MATLAB 中为编程保留了一些 关键字: break 、 case 、 catch 、 classdef 、 continue 、 else 、 elseif 、 end 、 for 、 function 、 global 、 if 、 otherwise 、 parfor 、 persistent 、 return 、 spmd 、 switch 、 try、while,这些关键字在程序编辑窗口中会以蓝色 显示(可以自己改变),它们是不能作为变量名的,否 则会出现错误。
函数
real(z) abs(z) conj(z)
说明
返回复数z的实部 返回复数z的幅度 返回复数z的共轭复数
函数
imag(z) angle(z) complex(a,b)
说明
返回复数z的虚部 返回复数z的幅角 以a为实部,b为虚部创建复数
12
【例2.4】复数的创建和运算。 >> a=1+2i a= 1.0000 + 2.0000i >> x=int32(8);y=int32(10); >> z=complex(x,y) z= 8+ 10i
MATLAB 中还有多种取整函数,可以用不同的策略把 浮点小数转换成整数,如下表所示
函数 round(a) 说明 向最接近的整数取整,小数 部分是 0.5 时向绝对值大的方 向取整 向0方向取整 举例 round(4.3)结果为4 round(4.5)结果为5 fix(4.3)结果为4 fix(4.5)结果为4 floor(4.3)结果为4 floor(4.5)结果为4
17
常量(特殊函数)
ans
pi
含义
用于存储计算结果的默认变量名
圆周率 的双精度表示
i 或j Inf或 inf
用于复数单位,即 i2=j2=-1 无穷大,前面可加+或- 非数值量,产生于0/0、无穷大 /无穷大
NaN
eps
date Realmin或realmin Realmax或 realmax version
2.1.1数值型数据 1) 整形 不同的整数类型所占用的位数不同,因此所能表示 的数值范围不同,在实际应用中,应该根据需要的数 据范围选择合适的整数类型。有符号整数类型使用一 位来表示正负,因此表示的数据范围和相应的无符号 整数类型不同。 由于MATLAB中数值的默认存储类型是双精度 浮点类型,因此,必须通过下表中列出的转换函数 将双精度浮点数值转换成指定的整数类型。
5
>> whos Name Size x 1x1 xx 1x1 y 1x1 yy 1x1 z 1x1 zz 1x1
Bytes Class 8 double 4 int32 8 double 4 int32 8 double 4 int32
【分析】从最后的 whos 命令结果中可清晰地看出 x 、 y、 z 三个变量的数据类型全是系统默认的双精度浮点型 ( double ) , 而 xx 、 yy 、 zz 的数据类型全是有符号的 32 位整形(int32)
%变量a是字符串型的数据
>> pi*2 %表达式的值没给任何自定义变量时, 就送给系统特殊变量ans ans = 6.2832
24
2.3 标量、向量、矩阵与数组
标量、向量、矩阵和数组是MATLAB运算中涉及的一 组基本运算量。它们各自的特点及相互间的关系可以 描述如下。
25
1)数组不是一个数学量,而是一个用于高级语言程 序设计的概念。如果数组元素按一维线性方式组织 在一起,那么称其为一维数组。一维数组的数学原 型是向量。 如果数组元素分行、列排成一个二维平面表格,那 么称其为二维数组。二维数组的数学原型是矩阵。
3
数据类型转换函 数 uint8 uint16 uint32 uint64 int8 int16 int32 int64
说 明 无符号8位整数 无符号16位整数 无符号32位整数 无符号64位整数 有符号8位整数 有符号16位整数 有符号32位整数 有符号64位整数
字节数 1 2 4 8 1 2 4 8
第2章 MATLAB基础
2.1 MATLAB数据类型 MATLAB数值型数据划分成整型和浮点型的用意和C 语言有所不同。MATLAB的整型数据主要为图像处理 等特殊的应用问题提供数据类型,以便节省空间或提 高运行速度。对一般数值运算,绝大多数情况是采用 双精度浮点型的数据。 具体的数据类型如下:
1
2
当MATLAB将矩阵引入作为基本运算量后,上述局 面改变了。MATLAB不仅实现了矩阵的简单加、减、 乘、除运算,而且许多与矩阵相关的其他运算因此 大大简化。 如A=[1 2;3 4] B=[5 6;7 8]这是两个同阶的2×2 矩阵,因此在MATLAB中,可将它们看成两个常量 进行诸如 A+B , A - B , A*B , A/B 这样一些算术运 算
取值范围 0~ 255 0~ 65535 0~ 4294967295 0~ 1.8447e+19 -128~ 127 -32768~32767 -2147483648 ~2147483647 -9.2234e+18~9.2234 e+18
4
【例 2.1】通过转换函数创建整数类型 >> x=102; >> y=102.49; >> z=102.5; >> xx=int32(x) xx = 102 >> yy=int32(y) yy = 102 >> zz=int32(z) zz = 103
容错量,非常接近于0,计算机上的值为 2-52
当前日期
Matlab所能表示实数的最小绝对值 Matlab所能表示实数的最大绝对值 Matlab版本信息 如8.3.0.532 (R2014a)
18
【例 2.6】显示符号常量eps,realmin,realmax的值 >> eps ans = 2.2204e-16 >> realmin ans = 2.2251e-308 >> realmax ans = 1.7977e+308
27
3 )向量是一个数学量,一般高级语言中也未引入, 它可视为矩阵的特例。从MATLAB的工作区可以查 看到:一个 n 维的行向量是一个 1 × n 阶的矩阵,而 一个n维的列向量则当成n×1阶的矩阵。 如A=[1 2 3 4]就是一个4维的行向量。也可看成是 一个一维数组,还要看成是一个1×4阶的矩阵。
double
单精 度
32(4)
0~22位表示小数部分, 1.1755e-38 23 ~ 30 位表示指数部分, 3.4028e+38 31位表示符号( 0为正, 1为负)
~
single
9
【例2.3】浮点数转换函数的应用。 >> clear %将内存中的变量清掉 >> x=uint32(210);y=single(32.356);z=15.254; >> xy=x*y %错误的运算式 错误使用 .* 整数只能与相同类的整数或标量双精度值组合使用。 %系统提示的错误原因 >> xz=x*z xz = 3203
ቤተ መጻሕፍቲ ባይዱ
fix(a)
floor(a)
向不大于 a 的最接近的整数 取整
ceil(a)
向不小于 a 的最接近的整数 取整
ceil(4.3)结果为5 ceil(4.5)结果为5
7
数据类型参与的数学运算与 MATLAB 中默认的双精度 浮点运算不同。当两种相同的整数类型进行运算时, 结果仍然是这种整数类型;当一个整型数值与一个双 精度浮点类型数值进行数学运算时,计算结果是这种 整数类型,取整采用默认的四舍五入方式。 【注意】两种不同的整数类型之间不能进行数学运算, 除非提前进行强制转换。 【例2.2】整数类型数值参与的运算。 >> x=uint16(103.45)*uint16(20.7) x= 2163 >> x=uint16(103.45)*20.7 x= 2132 8 >> x=uint16(103.45)*uint32(20.7) %错误的运算式
28
4 )标量的提法也是一个数学概念,但在 MATLAB 中, 一方面可将其视为一般高级语言的简单变量来处理, 另一方面又可把它当成1×1阶的矩阵,这一看法与矩 阵作为MATLAB的基本运算量是一致的。 如A=1就是一个标量,也就是一般的简单变量,同时 也可将它看成一个1×1阶的矩阵。
29
5 )在 MATLAB 中,二维数组和矩阵其实是数据结构 形式相同的两种运算量。二维数组和矩阵的表示、建 立、存储根本没有区别,区别只在于它们的运算符和 运算法则不同。 例如,向命令窗口中输入A=[1 2; 3 4]这个量,实际上 它有两种可能的角色:矩阵 A 或二维数组 A 。这就是 说,单从形式上是不能完全区分矩阵和数组的,必须 再看它使用什么运算符与其他量之间进行运算。
10
>> whos Name Size x 1x1 xz 1x1 y 1x1 z 1x1
Bytes Class 4 uint32 4 uint32 4 single 8 double
Attributes
11
3)复数 复数是对实数的扩展,每一个复数包括实部和虚部两 部分。MATLAB中默认用字符 i或者j表示虚部标识。 创建复数可以直接输入或者利用complex函数。 MATLAB中还有多种对复数操作的函数,如下表所示
19
【例2.7】创建无穷量和非数值量。 >> clear >> x=1/0 %产生正无穷大 x= Inf >> y=log(0) %产生负无穷大 y= -Inf >> z=0/0 %产生非数值量 z= NaN
20
2.2.2变量
变量是在程序运行中值可以改变的量,变量由变量 名来表示。在 MATLAB 中,变量名的命名有自己的 规则,可以归纳成如下几条。 ●变量名必须以字母开头,且只能由字母、数字或 者下划线 3 类符号组成,不能含有空格和标点符号 (如( ),。%)等。 ●变量名区分字母的大小写。例如,“ name ”和 “Name”是不同的变量。 ●变量名不能超过 63 个字符,第 63 个字符后的字符 被忽略。对于MATLAB 6.5以前的版本,变量名不能 超过31个字符。 ●关键字不能作为变量名。
15
在Matlab中,字符串常量采用一对半角单引号括起来, 字符串常量可包括数字,字母和其它符号。 对于矩阵来说,如[1 2;3 4],则可认为是矩阵常量, 当然这是个 2x2 矩阵,矩阵常用半角中的括号 “ [ ” 和“]”括起来。
16
除此之外在MATLAB中,有一类常量是由系统默认 给定一个符号来表示的。如pi,它代表圆周率π这个 常数,即3.141 592 6…。类似于C语言中的符号常 量,这些常量如下表所示,有时又称为系统预定义 的变量。
13
>> whos Name Size a 1x1 x 1x1 y 1x1 z 1x1
Bytes Class Attributes 16 double complex 4 int32 4 int32 8 int32 complex
14
2.2MATLAB的常量及变量
2.2.1常量 常量是程序语句中取不变值的那些量。如表达式 y=0.314*x,其中就包含一个0.314这样的数值常数,它 便是一个数值常量。而在另一表达式s='Hello'中,单引 号内的英文字符串“Hello”则是一个字符串常量。
像 A= [1 2 3 4]就是一个含有 4个元素一维数组,而 B=[1 2;3 4]一个二行二列的二维数组 如果元素在排成二维数组的基础上,再将多个行、 列数分别相同的二维数组叠成一个立体表格,便形 成三维数组。依此类推,便有了多维数组的概念。
26
2)矩阵是一个数学概念,一般高级语言并未将其作 为基本的运算量,但MATLAB是个例外。 一般高级语言是不认可将两个矩阵视为两个简单变 量而直接进行加、减、乘、除的,要完成矩阵的四 则运算必须借助于循环结构。
22
【例 2.8】变量赋值 >> a=3.14 a= 3.1400 >> class(a) %函数class用来是判断变量数据类 型的 ans = double %变量a是双精度的浮点型数据
23
>> a='hello!' hello! >> class(a) ans = char
%变量a重新赋值
2)浮点型 MATLAB 中提供了单精度浮点数类型和双精度浮 点数类型。它们在存储位宽、各数据位的用处、 表示的数值范围、转换函数等方面都不同,如下 表所示。
类型 所占位宽(字 节) 64(8) 各数据位用处 取值范围 转换函数
双精 度
0~51位表示小数部分, 2.2251e-308 52 ~ 62 位表示指数部分, ~1.7977e+308 63位表示符号( 0为正, 1为负)
21
作为一种编程语言, MATLAB 中为编程保留了一些 关键字: break 、 case 、 catch 、 classdef 、 continue 、 else 、 elseif 、 end 、 for 、 function 、 global 、 if 、 otherwise 、 parfor 、 persistent 、 return 、 spmd 、 switch 、 try、while,这些关键字在程序编辑窗口中会以蓝色 显示(可以自己改变),它们是不能作为变量名的,否 则会出现错误。
函数
real(z) abs(z) conj(z)
说明
返回复数z的实部 返回复数z的幅度 返回复数z的共轭复数
函数
imag(z) angle(z) complex(a,b)
说明
返回复数z的虚部 返回复数z的幅角 以a为实部,b为虚部创建复数
12
【例2.4】复数的创建和运算。 >> a=1+2i a= 1.0000 + 2.0000i >> x=int32(8);y=int32(10); >> z=complex(x,y) z= 8+ 10i