8.Matlab数据类型
8.1 整形
Data type |
Description |
range |
uint8 |
无符号8位整形 |
0~2^8-1 |
uint16 |
无符号16位整形 |
0~2^16-1 |
uint32 |
无符号32位整形 |
0~2^32-1 |
uint64 |
无符号64位整形 |
0~2^64-1 |
int8 |
有符号8位整形 |
-128~127 |
int16 |
有符号16位整形 |
-32768~32767 |
int32 |
有符号32位整形 |
-2^31~2^31-1 |
int64 |
有符号64位整形 |
-2^63~2^63-1 |
var_a = uint8(3);
var_b = uint8(256); % 数据溢出
var_c = uint16(5000);
var_d = uint32(50000);
var_e = int32(-50000);
var_f = uint32(-50000); % 注意符号
8.2 boolean
bool_a = true;
bool_b = false;
8.3 浮点型
single |
32位浮点型 |
double |
64位浮点型 |
half |
16位浮点型 |
float_a = double(pi); % 精度最高
float_b = single(pi); % 精度教高
float_c = half(pi); % 精度较低
8.4 固定点
使用fixdt进行定义。比如uint16整形,整数范围是0~65535,这时候16bit表示精度0.01的数,小数的范围0.00~655.35
fix_a = fixdt(0, 16, 0.01); % 用16bit来表示无符号的精度为0.01的数据
fix_b = fixdt(0, 8, 1, -40); % 用8bit来表示无符号的精度为1,偏移为-40的数据
8.5 枚举类型
使用命令Simulink.defineIntEnumType进行定义。
Simulink.defineIntEnumType('BasicColors', ... {'Red', 'Yellow', 'Blue'}, ... [0;1;2], ... 'Description', 'Basic colors', ... 'DefaultValue', 'Red', ... 'HeaderFile', 'mybasiccolors.h', ... 'DataScope', 'Exported', ... 'AddClassNameToEnumNames', true, ... 'StorageType', 'uint8'); |
8.6 bus类型
使用命令创建Bus
Bus_a = Simulink.Bus;
或者使用Model Explorer创建Bus
创建完后可以点击进行编辑,添加元素,修改数据类型等属性等等。
8.7 cell
8.7.1 创建cell
中文翻译元胞数组。cell里可以包含各种各样的数据类型数据。
使用cell函数创建cell
cell_a = cell(1);
使用{}创建cell
cell_b = {int8(1), uint8(9); 'Hello Matlab!', Simulink.Bus};
cell可以包含cell,这使得用一个cell可以包含任意的数据
8.7.2索引cell
可以使用()对cell进行索引,注意索引出来的还是cell。也可以使用{}进行索引,索引出来的是cell里包含的数据。
cell_b = {int8(1), uint8(9); 'Hello Matlab!', Simulink.Bus};
b = cell_b(2, 1); % 索引出来还是cell,1X1
c = cell_b{2, 1}; % 索引出来是字符类型
strcmp(b, 'Hello Matlab!'); % 字符比较函数
strcmp(c, 'Hello Matlab!');
c == 'Hello Matlab!'; % 可以比较,但是不推荐用==去比较字符类型
b == 'Hello Matlab!'; % 运行报错,数据类型不一致
8.8 char
字符数据类型,使用'去定义,两个''中间的就是要定义的字符串。
char_a = 'MatlabDataType.m';
open(char_a);
run(char_a);
which('MatlabDataType.m', '-all');
8.9 结构体
结构体的定义相对很灵活,随时定义随时使用。用.去添加成员。
strc_a.x = 0:0.01:2*pi;
strc_a.y= sin(strc_a.x);
plot(strc_a.x, strc_a.y);
strc_a.z= cos(strc_a.x);
plot(strc_a.x, strc_a.z);
strc_a.w = 'Hello MBD!';