MBD_入门篇_08_Matlab数据类型

前言

作者介绍

阿隆,深耕汽车控制器应用层开发多年,经历多家企业项目(包含多家中外头部企业),拥有多款控制器量产经验。主要技能包括应用层模型开发和c/c++代码编写,mil/sil测试,工具链开发,静态检查,BSW配置和手写,上位机开发等。

加V联系我:ALongAutom

使用介绍

MBD课程是阿隆从业多年后,在2022年的时候从0开始一点点录制的视频,一点点码字码出来的课程,现在分享给大家用来学习,如果对正在观看的你有帮助,可以帮忙推荐给身边的朋友,一起学习,也可以免费加入阿隆的技术交流群进行交流学习。

课程使用平台Matlab 2021b,建议初学者尽量使用同版本,避免出现版本差异带来的问题。等熟练掌握课程以后,再升级平台,出现版本差异的问题也知道该如何解决。

全网同名阿隆汽车,可以在其他平台搜索阿隆汽车找到阿隆,感谢观看。

入门篇视频是在Bilibili进行免费观看,链接如下:

阿隆MBD入门篇_合集_01_哔哩哔哩_bilibili

阿隆MBD入门篇_合集_02_哔哩哔哩_bilibili

实战篇01视频可以在Bilibili进行免费观看,链接如下:

阿隆MBD实战篇_01_VCU扭矩查表模块与CANoe联合仿真_哔哩哔哩_bilibili

提高篇视频观看链接

along-auto.com

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值