本文记录了在MATLAB学习过程中所需要认识和了解的基本数据类型。
(1)整数类型:分为有符号int和无符号uint两种,位数有8、16、32、64。对于非整数类型的数值,可以通过转换函数进行相互转换,例如向下取整floor(x),向上取整ceil(x),最接近整数取整round(x),向0取整fix(x)。
(2)浮点数类型:分为单精度和双精度。单精度为32位宽;双精度为64位宽。双精度浮点数运算结果由其它参与运算的数据类型决定:逻辑型、字符型—双精度;整数型—整数类型;单精度浮点型—单精度浮点型。
(3)复数:实部real(z)、虚部image(z)、模abs(z)、复数幅角angle(z)、共轭复数conj(z)、以a为实部、b为虚部创建复数。
(4)无穷量和非数值量。
(1)逻辑类型同C语言。
(2)逻辑类型运算不同于数值类型的运算。
>>String = 'Every good boy does have fun.';
>>size(String)
代码结果:ans = 1 29。其中1是1行,29代表29列;在字符串中,空格也是占用一个字符位置。字符串是数值数组,可以用数组操作工具进行操作。
>>String = 'It''s not the manual'
代码结果:String = ‘It’s not the manual’。字符串中单引号可以用两个连续的单引号表示。
>> A='Hello,';
>> B='world.';
>> C=[A B]
代码结果:C= ‘Hello,world.’。字符串的连接可以用两个字符串数组连接。
在MATLAB中直接调用函数:直接采用和M文件同名的子函数或者在主文件中定义好的函数,需要严格按照函数名。
在MATLAB中间接调用函数:采用操作符@,将函数保存到一个变量中,无需严格按照函数名,按照变量名使用函数即可。
>> F_Handle=@cos;
>> x=0:2*pi;
>> F_Handle(x)
可以看到,这里采用了F_Handle函数调用了cos函数。
(1)通过字段赋值创建结构体。
(2)通过struct函数创建结构体。
语法:s=struct(‘field1’,‘data1’,‘field2’,‘data2’…)。其中s是结构体的名称,s(1)表示结构体每个字段对应的第一个值,s(2)表示结构体每个字段对应的第二个值…以此类推。
>> Schedule=struct('Day',{'Monday','Tuesday','Wednesday'},'Time','15:00','Number',18);
>> Schedule(1)
ans =
包含以下字段的 struct:
Day: 'Monday'
Time: '15:00'
Number: 18
>> Schedule(2)
ans =
包含以下字段的 struct:
Day: 'Tuesday'
Time: '15:00'
Number: 18
>> Schedule(3)
ans =
包含以下字段的 struct:
Day: 'Wednesday'
Time: '15:00'
Number: 18
查看结构体的组成:
>> Schedule
Schedule =
包含以下字段的 1×3 struct 数组:
Day
Time
Number
MATLAB运算所有的数据类型都是按照数组及矩阵的形式进行存储和运算的,在形式上和矩阵的表达形式较为相同,但是与矩阵运算所使用的线性代数的运算不同。
(1)赋值创建数组
>> A=[1 2 3 4 5 6]
A =
1 2 3 4 5 6
(2)使用“:”创建数组
句法格式:Array = i : j : k,其中i是创建数组的起始值;j是步长,表示相邻元素之间的间隔,当j=0时,数组按照步长j=1进行创建数组;k是创建数组的终值。
>> A=1:6
A =
1 2 3 4 5 6
>> A=1:2:6
A =
1 3 5
MATLAb中的linspace可以用于产生x1,x2之间的N点行线性的矢量,表达式为linspace(x1,x2,N),其中x1、x2、N分别为起始值、终止值、元素个数。若默认N,默认点数为100。
N=50:
>> A=linspace(1,100,50)
A =
列 1 至 13
1.0000 3.0204 5.0408 7.0612 9.0816 11.1020 13.1224 15.1429 17.1633 19.1837 21.2041 23.2245 25.2449
列 14 至 26
27.2653 29.2857 31.3061 33.3265 35.3469 37.3673 39.3878 41.4082 43.4286 45.4490 47.4694 49.4898 51.5102
列 27 至 39
53.5306 55.5510 57.5714 59.5918 61.6122 63.6327 65.6531 67.6735 69.6939 71.7143 73.7347 75.7551 77.7755
列 40 至 50
79.7959 81.8163 83.8367 85.8571 87.8776 89.8980 91.9184 93.9388 95.9592 97.9796 100.0000
默认N:
>> A=linspace(1,100)
A =
列 1 至 22
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
列 23 至 44
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
列 45 至 66
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
列 67 至 88
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
列 89 至 100
89 90 91 92 93 94 95 96 97 98 99 100
(3)创建空数组
>> A=[]
A =
[]
空数组主要应用于逻辑运算、数组声明、数组的清空等。
单元数组包括许多类型的数据,组成单元数组的每一个元素称为一个单元,每个单元可由不同类型的数据构成。
(1)赋值创建单元数组
>> A={'x', [1,2,3];10, pi}
A =
2×2 cell 数组
{'x' } {1×3 double}
{[10]} {[ 3.1416]}
(2)利用cell函数创建单元数组
>> A=cell(3,3)
A =
3×3 cell 数组
{0×0 double} {0×0 double} {0×0 double}
{0×0 double} {0×0 double} {0×0 double}
{0×0 double} {0×0 double} {0×0 double}
(3)对单元数组进行寻访
(4)对单元数组进行操作
单元数组的操作包括合并、删除单元数组指定单元、改变单元数组的形状等。
map的本意是映射,就是将一个量映射到另一个量。例如将字符串映射为一个数值,这个字符串是map的键(key),被映射的数值就是map的数据(value)。