目录
2.1 MATLAB 的数值数据及操作
2.1.1 数值数据
2.1.2 数据的输出格式
2.2 MATCAB的变量及操作
2.2.1 变量与赋值
2.2.2 变量的管理
2.3 MATLAB的矩阵
2.3.1 创建矩阵
2.3.2 引用矩阵元素
2.1 MATLAB 的数值数据及操作
MATLAB的数值数据是最基本的一种数据类型,包括 整形、浮点型和复数型。每种类型系统都分配了不同字节数的内存单元,默认情况数值按双精度浮点类型存储和处理。
2.1.1 数值数据
1. 数值数据类型
1)整形。有符号整数和无符号整数。
类型 | 取值范围 | 转换函数 |
---|---|---|
8位无符号整数 | 0~2^8-1 | uint8 |
16位无符号整数 | 0~2^16-1 | uint16 |
32位无符号整数 | 0~2^32-1 | uint32 |
64位无符号整数 | 0~2^64-1 | uint64 |
8位有符号整数 | -2^7~2^7-1 | int8 |
16位有符号整数 | -2^15~2^15-1 | int16 |
32位有符号整数 | -2^15~2^15-1 | int32 |
64位有符号整数 | -2^15~2^15-1 | int64 |
以整数形式存储数据:
>> x=int16(12)
x =
int16
12
使用表2-1的转换函数将浮点型数据转换为整数时,MATLAB将舍入到最接近的整数。如果小数部分刚好时0.5,则会从两个临近的整数中取绝对值最大的整数。例如:
>> x=int16([1.2, 2.5, 0.1, -1.5])
x =
1×4 int16 行向量
1 3 0 -2
其它用于指定方式将浮点型数据转换为整形的函数:
① 1round:四舍五入为最近的小数或整数
② fix: 超零方向取整数
③ floor:朝负无穷达方向取整数
④ ceil:朝正无穷大方向取整数
>> x=round([1.2, 1.6, -1.1, -1.9, -0.2, 1.11, 1.55])
x =
1 2 -1 -2 0 1 2
>> x=fix([1.2, 1.6, -1.1, -1.9, -0.2, 1.11, 1.55])
x =
1 1 -1 -1 0 1 1
>> x=floor([1.2, 1.6, -1.1, -1.9, -0.2, 1.11, 1.55])
x =
1 1 -2 -2 -1 1 1
>> x=ceil([1.2, 1.6, -1.1, -1.9, -0.2, 1.11, 1.55])
x =
2 2 -1 -1 0 2 2
2)浮点型。包含 4字节单精度(single)和 8字节双精度(double)两种
3)复型。复型数据包括实部和虚部两个部分,默认都是双精度类型。序数单位用i或j表示。
>> x=1+2i
x =
1.0000 + 2.0000i
通过 complex函数创建复数。
>> y=complex(1,2)
y =
1.0000 + 2.0000i
real 获取复数实部,imag获取复数虚部
>> real(y)
ans =
1
>> imag(y)
ans =
2
2. 判断数据类型
函数 | 说明 |
---|---|
isinteger(n) | 判断n是否为整型 |
isfloat(n) | 判断n是否为浮点型 |
isnumeric(n) | 判断n是否为数值型 |
isreal(n) | 判断n是否为实数 |
3. 获取数值数据的特殊值
函数 | 说明 |
---|---|
eps | 浮点相对精度 |
intmax | 整数类型的最大值 |
intmin | 整数类型的最小值 |
realmax | 最大正实数 |
realmin | 最小正实数 |
注:eps是一个接近0但不等于0的数。通常在做除法运算时,给分母加上eps可以防止分母为0而出现结果异常
2.1.2 数据的输出格式
MATLAB用十进制表示一个常数,采用日常计数法和科学计数法两种表示方法。例如:1.234、-1.05356i、3.3+5i等是采用日常计数法表示的常数,又如:1.12345e2、1.112E-5-10i等采用科学计数法表示常数1.12345*10^2、1.112*10^-5-10i。这里的字母e或E表示以10位底的指数.
MATLAB默认使用双精度来表示和存储,可通过format设置或改变数据的输出格式。
format 格式符
格式符 | 含义 |
---|---|
short | 固定十进制短格式(默认格式),小数点后有4位有效数字 |
long | 固定十进制长格式,小数点后有15位有效数字 |
shortE | 短科学计数法,小数点后有4位有效数字 |
longE | 长科学计数法,输出为double类型时,小数点后有15位有效数字;输出single类型时,小数点后有7位有效数字 |
shortG | 从short和shortE中自动选择最紧凑的输出方式 |
longG | 从long和longE中自动选择最紧凑的输出方式 |
rat | 近似有理数格式 |
hex | 十六进制格式 |
+ | 正/负格式,正数、负数、零分别用+、-、空格表示 |
bank | 货币格式、输出时,小数点后有2位有效数字 |
compact | 输出时隐藏空行 |
loose | 输出时有空行 |
注:format 命令只影响数据的输出格式,而不影响数据的计算和存储
2.2 MATCAB的变量及操作
2.2.1 变量与赋值
1. 变量命名
变量名是以字母开头,后跟字母,数字或下划线的字符序列,最多63个字符。 定义变量时应当避免创建与预定义变量、函数同名的变量。
2. 赋值语句
变量=表达式
表达式
2.2.2 变量的管理
1. 内存变量的显示与修改
Who 命令按字母顺序列出当前工作区中的所有变量,whos在工作区中按字母顺序列出当前工作区中的所有变量及大小、类型。
>> who
您的变量为:
aa ans b c d x y
>> whos
Name Size Bytes Class Attributesaa 3x1 24 double
ans 1x8 16 char
b 4x1 32 double
c 4x1 432 cell
d 1x2 536 cell
x 1x1 16 double complex
y 1x1 16 double complex>>
clear 命令用于清除MATLAB工作区中的变量,但预定义变量不会被清除。
2.3 MATLAB的矩阵
在MATLAB中创建矩阵时无须对数组的维度和类型进行说明,MATLAB会自动根据用户输入的内容进行配置
1. 使用矩阵构造运算符([]) 创建矩阵
>> A = [1,2,3;4,5,6]
A =
1 2 3
4 5 6
2. 使用冒号表达式创建向量
格式如下:
a:b:c
其中,a为初始值,b为步长,c为终止值。
>> t = 0:2:11
t =
0 2 4 6 8 10
冒号表达式中,如果省略b,则步长为1:
>> t = 0:11
t =
0 1 2 3 4 5 6 7 8 9 10 11
可以使用linspace构建线性等间距的行向量:
格式如下:
linspace(a:b:n)
其中 a是生成向量的第一个元素,b是最后一个元素,n是指定向量元素的个数。 如果n省略不写,则默认生成100个元素。
>> linspace(1,20,5)
ans =
1.0000 5.7500 10.5000 15.2500 20.0000
3. 利用小矩阵创建更大的矩阵
>> A = [1,2,3;4,5,6]
A =
1 2 3
4 5 6>> B=[11,12;13,14]
B =
11 12
13 14>> C= [A,B;B,A]
C =
1 2 3 11 12
4 5 6 13 14
11 12 1 2 3
13 14 4 5 6
4. 获取数组大小
1)size 函数
size 函数用于获取数组指定维度的长度
size(A,dim)
如果dim省略,则返回一个向量。
>> A = [1,2,3;4,5,6]
A =
1 2 3
4 5 6>> size(A,1)
ans =
2
>> size(A)
ans =
2 3
2) length 函数 返回最大数组维度的长度,numel 函数用于获取数组元素的个数。
>> A = [1,2,3;4,5,6]
A =
1 2 3
4 5 6>> length(A)
ans =
3
>> numel(A)
ans =
6
3) sub2ind 和 ind2sub
数组元素可以通过下标引用,也可以通过索引引用。
>> A = [1,2,3;4,5,6]
A =
1 2 3
4 5 6>> A(2)
ans =
4
>> A(1,2)
ans =
2
>> [r,c] = ind2sub(size(A),2)
r =
2
c =1
>> sub2ind(size(A),1,3)
ans =
5