前言
作者介绍
阿隆,深耕汽车控制器应用层开发多年,经历多家企业项目(包含多家中外头部企业),拥有多款控制器量产经验。主要技能包括应用层模型开发和c/c++代码编写,mil/sil测试,工具链开发,静态检查,BSW配置和手写,上位机开发等。
加V联系我:ALongAutom
使用介绍
MBD课程是阿隆从业多年后,在2022年的时候从0开始一点点录制的视频,一点点码字码出来的课程,现在分享给大家用来学习,如果对正在观看的你有帮助,可以帮忙推荐给身边的朋友,一起学习,也可以免费加入阿隆的技术交流群进行交流学习。
课程使用平台Matlab 2021b,建议初学者尽量使用同版本,避免出现版本差异带来的问题。等熟练掌握课程以后,再升级平台,出现版本差异的问题也知道该如何解决。
全网同名阿隆汽车,可以在其他平台搜索阿隆汽车找到阿隆,感谢观看。
入门篇视频是在Bilibili进行免费观看,链接如下:
实战篇01视频可以在Bilibili进行免费观看,链接如下:
阿隆MBD实战篇_01_VCU扭矩查表模块与CANoe联合仿真_哔哩哔哩_bilibili
提高篇视频观看链接
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!';
2237

被折叠的 条评论
为什么被折叠?



