MBD_入门篇_08_Matlab数据类型

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!';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值