简介 MatLab 中基本数据类型–数值(numeric)、字符(char)、逻辑值(logical)、结构体(struct)、元胞数组(cell)。
MATLAB 默认情况下以双精度浮点形式 (double) 存储数值数据。
不带小数的数
MATLAB依据在内存中分配的字节数(字节数不同其表示范围就不同)分为四个有符号整数类
和四个无符号整数类
。有符号类型可以处理负整数以及正整数,但表示的数字范围不如无符号类型广泛,因为有一个bit用于指定数字的正号(0)或负号(1)。无符号类型提供了更广泛的数字范围,但这些数字只能为零或正数
。
MATLAB支持以 1字节(8bit)、2字节、4字节和 8字节几种形式存储整数数据。如果使用可容纳某数据的最小整数类型来存储某数据,则可以节省程序内存和执行时间。例如,不应使用 32 位整数来存储值 100
。
八个整数类 | 存储的值范围 | 创建该类型所需的转换函数 |
---|---|---|
有符号 8 位整数 | (10000000~01111111) -27 到 27-1 | int8 |
有符号 16 位整数 | -215 到 215-1 | int16 |
有符号 32 位整数 | -231 到 231-1 | int32 |
有符号 64 位整数 | -263 到 263-1 | int64 |
无符号 8 位整数 | (00000000~11111111) 0 到 28-1 | uint8 |
无符号 16 位整数 | 0 到 216-1 | uint16 |
无符号 32 位整数 | 0 到 232-1 | uint32 |
无符号 64 位整数 | 0 到 264-1 | uint64 |
>> x = int8(129)
x =
127
>> x = uint8(129)
x =
129
MATLAB默认情况下以双精度浮点形式 (double
) 存储数值数据。要以整数形式存储数据,需要从 double
转换为所需的整数类型。
例如,如果要以 16 位有符号整数形式存储赋给变量 x
的值 325
,请键入
x = int16(325);
如果待转换的数值带有小数部分,MATLAB 将舍入到最接近的整数。如果小数部分正好是 0.5
,则 MATLAB 会从两个同样临近的整数中选择绝对值大小更大的整数
>> a = 23.8
a =
23.8000
>> int8(a)
ans =
24
>> b = 52.5
b =
52.5000
>> int8(b)
ans =
53
MATLAB以双精度或单精度格式表示浮点数,默认为双精度。单精度型实数在内存中占用4个字节,而双精度型在内存中占用8个字节,所以双精度的数据精度更高。
一般使用双精度来存储大于 3.4 x 10^38 或约小于 -3.4 x 10^38 的值。对于位于这两个范围之间的数值,可以使用双精度,也可以使用单精度,但单精度需要的内存更少。
single()
:将其他类型的数据转换为单精度型 。
double()
:将 其他类型的数据转换为双精度型
>> class(4) % 数值数据默认为``double类型``
ans =
'double'
>> class(single(4))
ans =
'single'
复型数据由实部
和虚部
组成,实部和虚部为双精度型,虚部单位用i
、j
来表示
abs | 绝对值和复数的模 |
i 、j | 虚数单位 |
real | 复数的实部 |
imag | 复数的虚部 |
angle | 相位角 |
conj | 复共轭 |
complex | 创建复数数组 |
cplxpair | 将复数排序为复共轭对组 |
isreal | 确定数组是否为实数数组 |
sign | sign 函数(符号函数) |
unwrap | 更正相位角以生成更平滑的相位图 |
imag()
:求复数的虚部
real()
:求复数的实部
>> a = 6+5i
a =
6.0000 + 5.0000i
>> real(a)
ans =
6
>> real(6+5j)
ans =
6
>> imag(6+5j)
ans =
5
>> imag(a)
ans =
5
数值格式仅影响数字显示在命令行窗口输出中的方式,而不是 MATLAB计算或保存它们的方式。
format style
将命令行窗口中的输出显示格式更改为 style
指定的格式。
format
自行将输出格式重置为默认值,即浮点表示法的短固定十进制小数点格式和适用于所有输出行的宽松行距。
Style | 结果 | 示例 |
---|---|---|
short (default) | 短固定十进制小数点格式,小数点后包含 4 位数。 | 3.1416 |
long() | 长固定十进制小数点格式,double 值的小数点后包含 15 位数,single 值的小数点后包含 7 位数。 | 3.141592653589793 |
shortE | 短科学记数法,小数点后包含 4 位数。 | 3.1416e+00 |
longE | 长科学记数法,double 值的小数点后包含 15 位数,single 值的小数点后包含 7 位数。 | 3.141592653589793e+00 |
shortG | 短固定十进制小数点格式或科学记数法(取更紧凑的一个),总共 5 位。 | 3.1416 |
longG | 长固定十进制小数点格式或科学记数法(取更紧凑的一个),对于 double 值,总共 15 位;对于 single 值,总共 7 位。 | 3.14159265358979 |
shortEng | 短工程记数法,小数点后包含 4 位数,指数为 3 的倍数。 | 3.1416e+000 |
longEng | 长工程记数法,包含 15 位有效位数,指数为 3 的倍数。 | 3.14159265358979e+000 |
+ | 正/负格式,对正、负和零元素分别显示 + 、- 和空白字符。 | + |
bank | 货币格式,小数点后包含 2 位数。 | 3.14 |
hex | 二进制双精度数字的十六进制表示形式。 | 400921fb54442d18 |
rat | 小整数的比率。 | 355/113 |
见文本与字符.md
逻辑类型的数据是指布尔类型的数据及数据之间的逻辑关系。 除了传统的数学运算, MATLAB还支持关系和逻辑运算。 这些运算的目的是提供求解真/假命题的答案。
作为所有关系和逻辑表达式的输入,MATLAB 把任何非零数值当作真,输出为1, 把零当作假, 输出为0。
逻辑类型数据进行运算时需要用到关系操作符
和逻辑运算符
。
在MATLAB中,结构体是一个存储{键: 值}
的数据结构,类似于Python语言中的字典.
.
来访问结构体中的字段:student.name = 'John Doe';
student.id = 'jdo2@sfu.ca';
student.number = 301073268;
student.grade = [100, 75, 73; ...
95, 91, 85.5; ...
100, 98, 72];
student
student(2).name = 'Ann Lane';
student(2).id = 'aln4@sfu.ca';
student(2).number = 301078853;
student(2).grade = [95 100 90; 95 82 97; 100 85 100];
student
函数 | 作用 |
---|---|
struct | 创建结构体 |
struct2cell | 将结构体转换为元胞数组 |
cell2struct | 将元胞数组转换为结构体 |
isstruct | 判断某变量是否是结构体 |
structfun | 对结构体的每个字段都应用某函数 |
fieldnames | 获取结构体的所有字段名 |
isfield | 判断结构体是否包含某字段 |
getfield | 获取结构体某字段的值 |
setfield | 为结构体中的某字段赋值 |
rmfield | 删除结构体中的某字段 |
orderfields | 为结构体字段排序 |
在 MATLAB 中,元胞数组是一个可以容纳不同类型元素的数据结构,类似于Python语言中的列表
{}
像定义矩阵一样定义元胞数组:A = { [1 4 3; 0 5 8; 7 2 9] 'Anne Smith' ;...
3+7i -pi:pi:pi}
A(1,1)={[1 4 3; 0 5 8; 7 2 9]};
A(1,2)={'Anne Smith'};
A(2,1)={3+7i};
A(2,2)={-pi:pi:pi};
A{1,1}=[1 4 3; 0 5 8; 7 2 9];
A{1,2}='Anne Smith';
A{2,1}=3+7i;
A{2,2}=-pi:pi:pi;
函数 | 作用 |
---|---|
cell | 创建一个元胞数组 |
iscell | 判断某变量是否为元胞数组 |
cell2mat | 将元胞数组转为矩阵 |
cell2struct | 将元胞数组转为结构体 |
mat2cell | 将数组转换为指定大小元胞数组 |
num2cell | 将数组转换为相同大小的元胞数组 |
struct2cell | 将结构体转换为元胞数组 |
celldisp | 递归显示元胞数组中的内容 |
cellplot | 以图像形式绘制元胞数组的结构 |
cellfun | 对元胞数组的每个元胞应用某函数 |
其中mat2cell
函数可以在转换的时候指定元胞数组各元胞的尺寸.
a = magic(3)
b = num2cell(a)
% 得到
% [8] [1] [6]
% [3] [5] [7]
% [4] [9] [2]
c = mat2cell(a, [1 2], [2, 1])
下列函数可以对变量类型进行判断:
函数 | 作用 |
---|---|
isinteger | 判断输入参数是否为整型数数组 |
islogical | 判断输入参数是否为逻辑量数组 |
isnumeric | 判断输入参数是否为数值数组 |
isreal | 判断输入参数是否为实数数组 |
ischar | 判断输入参数是否为字符数组 |
iscell | 判断输入参数是否为元胞数组 |
isfloat | 判断输入数组是否为浮点数组 |
ishandle | 判断输入数组是否有效的图形句柄 |
isempty | 判断输入数组是否为空 |
isprime | 确定哪些数组元素为质数 |
isnan | 确定哪些数组元素为NaN |
isinf | 确定哪些数组元素为Inf |
isequal | 判断数组是否相等 |
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删