基础知识与数据对象"/>
Matlab:基础知识与数据对象
Matlab
- 基本操作
- 操作界面
- 基本规则
- 命令函数
- 数值数据
- 整型
- 浮点型
- 复型
- 数据的输出格式
- 常用函数
- 取整函数
- 取特殊值函数
- 数学函数
- 变量与赋值
- 数组
- 矩阵
- 运算
基本操作
Matlab是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。下面简单介绍Matlab的基础知识。
操作界面
Matlab操作界面主要有菜单栏、快速访问工具栏、当前文件夹工具栏、命令行窗口与工作区组成。如下图:
-
菜单栏:由主页、绘图、APP三个选项卡组成,每个选项卡中包含对应的功能。
-
快速访问工具栏:提供对常用操作(保存、剪切、复制、粘贴、撤销、重做、切换窗口、搜索等)的访问。
-
当前文件夹工具栏:Matlab当前的工作目录,用户可以自行设定。
-
命令行窗口:用于输出命令并显示数值的执行结果。
-
工作区:存储各种变量与结果的内存空间。
基本规则
1.命令格式
一般来说,一个命令行输入一条命令,命令行以回车结束。但一个命令行也可以输入若干条命令,各命令之间以逗号分隔。若命令执行后,不需要显示某个变量的值,则在对应命令后加上分号。
2.续行符
如果一个命令行很长,一个物理行之内写不下,可以在第1个物理行之后加上续行符“…”,然后接着在下一个物理行继续写命令的其他部分。
命令函数
命令函数 | 作用 |
---|---|
help命令 | 查询函数语法 |
clc命令 | 清空命令行窗口 |
clear命令 | 清空工作区 |
global命令 | 声明全局变量 |
who命令 | 列出当前变量 |
quit命令 | 停止 |
数值数据
数值数据(Numerical Data)或称为数字数据,是数据中的一种。一般来说是按数字尺度测量的观察值,其结果表现为具体的数值或可计数出来的数据。现实中所处理的大多数都是数值型数据。数值数据类型分类:整型、浮点型与复型。
整型
整数(Integer),是正整数、零、负整数的集合。
在Matlab中,整型包括无符号整型和有符号整型。其中,无符号整型只表示大小的整型,即永远为非负的整型变量,大于0的数据范围约扩大为原来的2倍;有符号整型表示正负大小的整型,最高位储存符号。
整数类型 | 取值范围 | 相应函数 |
---|---|---|
无符号8位整数 | [0,28-1] | uint8() |
无符号16位整数 | [0,216-1] | uint16() |
无符号32位整数 | [0,232-1] | uint32() |
无符号64位整数 | [0,264-1] | uint64() |
有符号8位整数 | [-27,27-1] | int8() |
有符号16位整数 | [-215,215-1] | int16() |
有符号32位整数 | [-231,231-1] | int32() |
有符号64位整数 | [-263,263-1] | int64() |
- 注: 在Matlab中整数类型可以实现相互转换,但当转换结果超出相应的整数类型的范围时,运算结果则为该整数类型的数值的最大值或最小值。
>> %注释:示例1
>> a = uint8(256)a =uint8255>> %注释:示例2
>> b = uint16(-1)b =uint160>> %注释:示例3
>> c = int32(2147483648)c =int322147483647>> %注释:示例4
>> d = int8(-129)d =int8-128
浮点型
浮点数即小数,是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。
在Matlab中,浮点型包括单精度浮点型与双精度浮点型,用于存储和处理实型数据。其中,单精度浮点型占用4个字节(32位);双精度浮点型占用8个字节(64位),数值默认存储的类型是双精度浮点型。
浮点类型 | 取值范围 (科学记数法) | 相应函数 |
---|---|---|
单精度浮点型 | [-3.4028e+38,3.4028e+38] | single() |
双精度浮点型 | [-1.7977e+308,1.7977e+308] | double() |
>> %注释:示例1
>> a=8;
>> class(a) %查看数据类型ans ='double'>> %注释:示例2
>> b=88;
>> b = single(b); %利用函数转换成对应的数据类型
>> class(b)ans ='single'
复型
复数(Complex Number),形如z=a+bi(a、b均为实数)的数称为复数。其中,a称为实部,b称为虚部,i称为虚数单位。
在MATLAB中,虚数单位用 i 或 j 表示。当所创建的复数实部或虚部是非浮点型数时,则使用complex函数生成复数。
>> %注释:示例1
>> complex(8,int8(8))ans =int88 + 8i>> %注释:示例2
>> %real()函数求取复数实部;imag()函数求取复数虚部
>> a=8+8i;
>> real(a)ans =8>> imag(a)ans =8
数据的输出格式
日常记数法:1.23456、−9.8765i、3.4 + 5i
科学记数法:1.56789e2、1.234e−5 − 10i,用字母e或E表示以10为底的指数。
数据输出时用户可以用format命令设置或改变数据输出格式,但只影响数据输出格式,而不影响数据的计算和存储。
format命令的格式为:format 格式符
格式符 | 输出格式 | 示例 (x = 3.1415926535897932) |
---|---|---|
short | 默认格式,短固定十进制小数点格式,显示小数点后四位 | 3.1416 |
shortE | 短科学记数法,显示小数点后四位,显示三位指数 | 3.1416e+00 |
shortG | 在短固定十进制小数点格式和短科学记数法中选取最紧凑的显示格式,显示五位有效数 | 3.1416 |
shortEng | 短工程记数法,显示小数点后四位数,指数为3的倍数 | 3.1416e+000 |
long | 长固定十进制小数点格式并显示 pi 的值,double值显示小数点后十五位,single值显示小数点后七位 | 3.141592653589793 |
longE | 长科学记数法,double值显示小数点后十五位,single值显示小数点后七位 | 3.141592653589793e+00 |
longG | 在长固定十进制小数点格式和长科学记数法中选取最紧凑的显示格式,对于double值,显示十五位有效数;对于single值,显示七位有效数 | 3.14159265358979 |
longEng | 长工程记数法,显示十五位有效位数,指数为3的倍数 | 3.14159265358979e+000 |
+ | 正/负格式,对正、负和零元素分别显示 +、- 与空白字符 | + |
bank | 银行格式用以表示货币,显示小数点后两位 | 3.14 |
hex | 十六进制格式 | 400921fb54442d18 |
rational | 小整数的比率 | 355/113 |
loose | 宽松格式,行距的默认设置,添加空白行以使输出更易于阅读 | 隐藏空行 |
compact | 压缩格式,在显示变量之间没有空行 | 默认 |
常用函数
取整函数
取整函数 | 作用 |
---|---|
round() | 取对最前的小数四舍五入的整数 |
fix() | 取朝零方向四舍五入为最近的整数 |
floor() | 朝负无穷大方向四舍五入 |
ceil() | 朝正无穷大方向四舍五入 |
取特殊值函数
取特殊值函数 | 作用 |
---|---|
eps | 获取浮点相对精度 |
realmax | 获取最大正浮点数 |
realmin | 获取最小标准正浮点数 |
intmin | 获取整数类型的最小值 |
intmax | 获取指定整数类型的最大值 |
NaN | 获取非数值 |
Inf | 获取无穷大 |
pi | 获取圆周率的近似值 |
ans | 获取存储计算结果的默认变量 |
数学函数
函数 | 含义 |
---|---|
sin()/sind() | 正弦函数 |
cos()/cosd() | 余弦函数 |
tan()/tand() | 正切函数 |
asin()/asind() | 反正弦函数 |
acos()/acosd() | 反余弦函数 |
atan()/atand() | 反正切函数 |
sinh() | 双曲正弦函数 |
cosh() | 双曲余弦函数 |
tanh() | 双曲正切函数 |
asinh() | 反双曲正弦函数 |
acosh() | 反双曲余弦函数 |
atanh() | 反双曲正切函数 |
log() | 自然对数,即以e为底的对数 |
log10() | 以10为底的对数 |
log2() | 以2为底的对数 |
exp() | 自然指数,即以e为底的指数 |
pow2() | 2的幂 |
sqrt() | 平方根 |
power() | n次幂 |
nthroot() | n次方根 |
conj() | 复数共轭运算 |
rem() | 求余数或模运算 |
mod() | 模除求余 |
factorial() | 阶乘 |
abs() | 绝对值 |
sign() | 符号函数 |
gcd() | 最大公因子 |
lcm() | 最小公倍数 |
变量与赋值
在Matlab的变量命名中,变量名是以字母开头,区分字母的大小写,后跟字母、数字或下划线的字符序列,最多63个字符。另外,不能使用MATLAB的关键字作为变量名。
在Matlab的变量语句中,其有两种格式:
(1).变量 = 表达式
(2).表达式
另外,如果在命令的最后加分号" ; ",Matlab只会执行赋值操作,不显示运算的结果。
示例:
%注释:解答
>> format compact
>> format short
>> x=sqrt(1+pi);
>> y=(exp(x)+log(abs(sin(x)^2-sin(x*x))))/(x-5i)
y =0.5690 + 1.3980i
数组
数组(Array),是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。 [1] 这些有序排列的同类数据元素的集合称为数组。数组是用于储存多个相同类型数据的集合。
数组类型:
标量:在Matlab中可以当作矩阵的一种,当矩阵的行数和列数均为1时,建立的矩阵。
空数组:一个真正的对象,只是包含元素个数为0。
一维数组:可以看做向量,是由一行数据或者一列数据所组成,其大小为1xn或nx1。
二维数组:由有一定的行数列数的数据组成,其大小为mxn。
多维数组:三维及其以上的数组,三维数组具有高、宽、深的概念,或者说行、列、层的概念,即数组嵌套数组达到三维及其以上。
>> %注释:创建数组示例
>> %空数组
>> array1 = []
array1 =[]>> %一维数组:行向量(1xn)
>> %行向量用空格或","隔开
>> array2 = [1 2 3]array2 =1 2 3>> %一维数组:列向量(nx1)
>> %列向量用";"隔开
>> array3 = [4;5;6]array3 =456>> %三维数组
>> %先创建两个二维数组
>> array5 = [16 17 18;19 20 21;22 23 24];
>> array6 = [25 26 27;28 29 30;31 32 33];
>> array7 = array5;
>> %将array5赋值給三维数组array7的第一个页面
>> array7(:,:,2) = array6 %通过使用组合索引任意行与任意列将array6赋值給三维数组array7的第二个页面
位置 3 处的索引超出数组边界(不能超出 1)。array7(:,:,1) =16 17 1819 20 2122 23 24array7(:,:,2) =25 26 2728 29 3031 32 33>> ndims(array7) %查看维度ans =3>> size(array7) %查看行数、列数与页面数ans =3 3 2>> %四维数组,同理:
>> array8 = array7; %将三维数组赋值给array8
>> array8(:,:,:,2) = array7; %然后再将三维数组赋值给array8任意行、任意列、任意面与第四个维度为2
>> array8array8(:,:,1,1) =16 17 1819 20 2122 23 24array8(:,:,2,1) =25 26 2728 29 3031 32 33array8(:,:,1,2) =16 17 1819 20 2122 23 24array8(:,:,2,2) =25 26 2728 29 3031 32 33>> ndims(array8)ans =4>> size(array8)ans =3 3 2 2
在数组中,常用的函数:
函数 | 作用 |
---|---|
linspace(a, b, n) | 构建线性等间距的行向量。其中,参数a、b分别是生成向量的第1个与最后1个元素,n为指定向量元素个数。当n省略时,默认生成100个元素 |
size(A, dim) | 返回数组的尺寸。其中,A是数组,dim指定维度,当dim省略时,则返回一个向量,向量各个元素的值对应每一个维度的长度 |
length() | 用于获取最大数组维度的长度 |
numel() | 用于获取数组元素的个数 |
矩阵
矩阵(Matrix),是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。数组与矩阵十分相似,正如《精通MATLAB6.5版》(张志涌编著,北京航空航天大学出版社)一书所说:从外观形状和数据结构上看,二维数组和数学中的矩阵没有区别。
而矩阵是一个数学的概念,数组是一个计算机上的概念;二者最直观的区别是:矩阵中的元素只能是数字,数组中的元素可以是字符等。
>> %创建空矩阵
>> matrix1 = []matrix1 =[]>> %标量:在Matlab中可以当作矩阵的一种,维度为1x1的矩阵(及实数或复数)。
>> matrix2 = 8;
>> %isscalar()判断是否为标量,若是返回1,反之0
>> isscalar(matrix2)ans =logical1>> %创建矩阵(一个二维的数据阵列)
>> matrix3 = [1 2 3;4 5 6]matrix3 =1 2 34 5 6>> %冒号表达式创建1xn的矩阵:首位:步长;尾数
>> matrix4 = 7:1:12matrix4 =7 8 9 10 11 12>> %删除矩阵行或列
>> matrix3(:,[2])=[] %删除matrix3矩阵的第2列元素matrix3 =1 34 6>> %reshape(A,m,n)函数改变矩阵形状,将矩阵A重新排成m×n的二维矩阵
>> reshape(matrix4,6,1)ans =789101112
在矩阵中,常用的函数:
函数 | 作用 |
---|---|
zeros(m,n) | 创建m行n列元素全为0的矩阵 |
ones(m,n) | 创建m行n列元素全为1的矩阵 |
eye(n) | 创建n阶的单位方阵(对角线元素为1,其他元素为0且行数与列数相等的矩阵) |
magic(n) | 创建魔方矩阵(n*n个数字所组成的n阶方阵,具有各对角线,各横列与纵行的数字和都相等的性质) |
rand(n)/rand(m,n) | 创建满足(0, 1)之间且服从均匀分布的随机数组成的n阶(或mxn)矩阵 |
diag(Matrix) | 用于构造一个对角矩阵,不在对角线上元素全为0的方阵,或者以向量的形式返回一个矩阵上对角线元素 |
triu(Matrix,n) | 提取上三角矩阵。n为偏移量,默认为0,指主对角线 |
tril(Matrix,n) | 提取矩阵下三角。n为偏移量,默认为0,指主对角线 |
inv(Matrix) | 获取方阵的逆 |
运算
算术运算简称运算。指按照规定的法则和顺序对式题或算式进行运算,并求出结果的过程。包括:加法、减法、乘法、除法、乘方、开方等几种运算形式。
数组运算 | 运算符 | 示例(数组A、B,数字K) |
---|---|---|
加法 | + | A+B,数组的对应元素相加;K+A,数字K相加A的每个元素 |
减法 | - | A-B,数组的对应元素相减;K-A,数字K相减A的每个元素 |
乘法 | .* | A.*B,数组的对应元素相乘;K.*A,数字K相乘A的每个元素 |
乘方 | .^ | A.^K,即A每个元素的K次方运算; K.^A,即以K为底,以A的每个元素为指数的幂运算 |
除法 | .\(左除) | 左边是除数,右边是被除数。(A.\K,即K除以A每个元素) |
除法 | ./(右除) | 右边是除数,左边是被除数。(K./A,即K除以A每个元素) |
非共轭转置 | .’ | A.’ (针对数组运算,转置后不取数组元素的共轭复数) |
矩阵运算 | 运算符 | 示例(矩阵A、B,数字K) |
---|---|---|
加法 | + | A+B,矩阵的对应元素相加 |
加法 | + | K+A,需要在相同的mn阶矩阵才能进行计算,将K乘以单位矩阵再相加。即 Kones(size(A))+A |
减法 | - | A-B,矩阵的对应元素相减 |
减法 | - | K-A,同理,K*ones(size(A))-A |
乘法 | * | A * B,按数学定义的矩阵乘法规则;K * A,K乘以A的每个元素 |
乘方 | ^ | A^K(K个矩阵A相乘) |
除法 | \(左除) | A\B,AX=B的解 |
除法 | /(右除) | B/A,XA=B的解 |
共轭转置 | ’ | A’,(针对矩阵运算,转置后取数组元素的共轭复数) |
关系运算符 | 含义 |
---|---|
< | 小于 |
<= | 小于或等于 |
> | 大于 |
>= | 大于或等于 |
== | 等于 |
~= | 不等于 |
注:
- 当参与比较的量是两个标量时,若关系成立,关系表达式结果为1,否则为0。
- 当参与比较的量是两个维度相同的矩阵时,逐个比较对两矩阵相同位置的元素,并给出元素的比较结果。
- 当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素逐个比较,并给出元素的比较结果。
逻辑运算符 | 含义 |
---|---|
&(与) | a & b:逻辑与运算,当a、b全为非零时,运算结果为1,否则为0 |
(或) | a 或 b:逻辑或运算,当a、b中只要有一个非零,运算结果为1 |
~(非) | ~a:逻辑非运算,当a是零时,运算结果为1;当a非零时,运算结果为0 |
异或运算函数xor(a,b) | 函数xor(a, b):逻辑异或运算,当a、b的值不同时,运算结果为1,否则运算结果为0 |
注:或的逻辑运算符为 “ | ”,矩阵逻辑运算法则:
- 若参与逻辑运算的是两个维度相同的矩阵,那么运算将逐个对矩阵相同位置上的元素按标量规则进行。
- 若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。
- 逻辑非是单目运算符,也服从矩阵运算规则。
all函数和any函数。
若向量的所有元素非零,all函数的返回值为1,否则为0。
若向量的任一元素非零,any函数的返回值为1,否则为0。
更多推荐
Matlab:基础知识与数据对象
发布评论