MBD_入门篇_08_Matlab数据类型

MATLAB/Simulink MBD的自动化编程----开局 本篇幅只针对模型自动化处理的基本命令进行介绍,相应Simulink API的复杂使用方法,可以根据实际使用过程中的具体需求来选择合适的接口与接口参数来完成模型自动化处理。打开模型、保存模型、关闭模型是通过脚本实现模型自动化处理过程中的必要操作。后续将会贴近一些模型开发过程中会涉及到的一些模型自动化处理功能进行讲解。 阅读详情

前言

作者介绍

阿隆,深耕汽车控制器应用层开发多年,经历多家企业项目(包含多家中外头部企业),拥有多款控制器量产经验。主要技能包括应用层模型开发和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!';

智能平衡移动机器人-MBD开发介绍 基于模型的设计到代码生成的过程不同于普通的Simulink 建模仿真,其涉及多个软件,均需要根据具体要求进行配置后使用,具体涉及的软件有下列几种。(1)MATLAB R2020a、Simulink 工具箱及对应芯片的硬件支持包:R2020a 仅支持 64 位操作系统,同时由于其运算能力的提升,要求系统至少有 4G 运行内存;Simulink 是依附于 MATLAB 的一个仿真工具箱,其具有模块精简,参数配置灵活,模型符合实际等优点,广泛应用于航空航天、信号处理、汽车、电机控制、通信行业等。 阅读详情

相关推荐

【STM32F407+matlab/simulink+STM32CubeMX】基于MBD的嵌入式系统实现

【STM32F407+matlab+STM32CubeMX】基于MBD的嵌入式系统实现 基于STM32CubeMX和HAL的嵌入式系统编程通过图形化配置和自动生成初始化C代码的方式,大大降低了嵌入式系统应用程序开发的工作量。 偶尔看见刘杰老师的基于模型的设计和嵌入式系统实现,被只需要搭建模型就可以生成可以下载到嵌入式系统运行的代码的描述强烈吸引,几经波折,在几天的折腾后实现,终于实现了。避免忘记,避免重复踩坑,写本文档以记录之。 参考博文:https://blog.youkuaiyun.com/u010411288/a

icsdn2002的博客 3675

MBD_入门篇_02_MBD相关工具箱介绍

Matlab模型生成代码工具箱(Simulink Coder)是MathWorks公司开发的可用于生成嵌入式系统,自动代码生成的工具箱。MBD最核心的部分就是安装Matlab,不同公司购买的Matlab包含不同的工具箱,费用也会不同,有些是网络License,有些是单机的License。总之,Matlab模型生成代码工具箱是Matlab和Simulink用户必备的工具,能够大大简化嵌入式系统的开发和测试流程,提高开发效率和代码质量。Simulink就是建模的工具,可以建立各种各样的模型,进行仿真。

ALongAuto的博客 3783

零基础速成simulink代码生成——matlab基础介绍1

MBD(Model-Based Design)是一种在工程领域中广泛应用的方法,通过使用数学模型来设计和开发系统。MBD方法可以提高开发效率、降低成本,并确保系统的可靠性和稳定性。MBD方法的核心是使用模型来描述系统的行为,并在模型上进行仿真和验证。

不断debug,优化中…… 1652

MBD_入门篇_04_Matlab简介

还可以添加一些常用的文件夹在路径中,比如我们写了一套工具,我们希望想用这个工具的时候就可以直接使用,那我们就可以把这个工具的文件夹加到路径历里来。其实我们在Matlab这边显示的Workspace,它的名字应该叫Base Workspace,我们定义的变量等都会存储在这里,我们可以直接点击查看或者编辑,非常方便。加载到路径中相当于这个路径成为了我们使用的时候会去在这些文件夹中挨个去搜索我们要用的函数或者文件等,如果不加载,那我们是没办法直接使用的。可以去使用Matlab命令去定义变量,使用函数等等。

ALongAuto的博客 1439

基于模型生成代码(MBD)

是一个高性能的数值计算和可视化软件包。它提供了一个集成的开发环境(IDE),专为工程师和科学家设计。核心功能:在矩阵计算、算法实现、数据分析和可视化方面表现出色。多学科应用:广泛应用于各种工程和科学领域,包括信号处理、通信系统、控制系统设计、图像处理、计算金融学和计算生物学等。Simulink是MATLAB的一个附加产品,专门用于基于图形的模拟和模型驱动设计。应用领域:广泛用于自动控制、数字信号处理、电气系统和机械系统的设计和仿真。

不断debug,优化中…… 5799

Mac无管理员权限安装NVM全攻略(附国内镜像加速)

本文详细介绍了在Mac电脑无管理员权限的情况下,如何通过Git克隆方式安装Node版本管理工具NVM,并配置国内镜像源以加速下载。攻略涵盖环境检查、安装步骤、Shell环境变量配置、镜像加速设置以及常用命令和常见问题解决方案,帮助开发者绕过权限限制,高效管理Node.js版本。

weixin_29296241的博客 487

MBD_入门篇_01_MBD与传统编码的区别

MBD(Model-Based Design)是以模型为基础的设计方法,它是一种系统开发方法论。对系统进行建模、分析、验证,然后基于模型自动生成代码、测试用例和文档等

ALongAuto的博客 1万+

MacTeX+TeXstudio:Macbook配置本地Latex看这一篇就够了

这个博客记录本人在MacBook上配置本地Latex的流程,其中选择的编译环境为MacTeX,编辑器为TeXstudio。采用的原因主要两点:一个是本人配置的原因主要是用来撰写毕业论文,希望能够尽可能简化设置流程,专注内容表达;第二是由于本人还有一个windows系统的笔记本,想要编辑器在专注写作体验的同时在两个系统上能够都适配,从而减少切换效率,故选择此组合。这篇文章介绍并详细记录了本人的安装流程,有相同需求的同志也可借鉴。

Katherine-XY的博客 6978

Matlab编程技巧:MBD中常用的Matlab函数

在MBD(基于模型开发)中,需要掌握一些常用的函数。这些函数经常用于搭建集成环境、生成手写代码等。恰当地使用函数编写Matlab脚本可以提高MBD工作的自动化程度,提高工作效率。 本文会分类列举笔者工作中常用的函数,并简要说明其应用场景以及一些使用心得。同时也欢迎有其他项目经验的朋友在博客下留言补充。

u013288925的博客 8466

检索生成(RAG) vs 长文本大模型:实际应用中如何选择?

大模型的上下文理解能力直接影响到 LLMs 在复杂任务和长对话中的表现。本期内容聚焦于两种主流技术:长上下文(Large Context Windows)和检索增强生成(RAG)。这两种技术各有何优势?在实际应用中,我们又该如何权衡选择?文章不仅详细阐述了这两种技术的工作原理,还深入分析了它们在效率、准确性和实施成本等方面的差异。文章特别提到了在执行重复性任务时使用 Context Caching 优化长上下文的优势,然而,缓存策略的效果很大程度上取决于提示词的可预测性。

2401_85782938的博客 1254

【STM32】H743的25MHZ外部晶振下480MHz时钟的CubeMX配置图

备忘 有时候临时调一个外设做实验需要快速搭建工程的时候,老忘记配置的数据 再补一段代码格式的 void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; /** Supply configuration up

一只爱做笔记的码农 3395

MBD_入门篇_14_Simulink常用模块

Reset在delay作为某个函数运行的时候,新来的信号处理的时候,如果不进行Reset,那将会用上一个信号的最后一个值作为初始值,在这种情况下会多一个无效值,使我们运算有可能会出错。满足第2个port的输入条件,把第1个Port的值作为输出,不满足的话,把第3个Port的值作为输出。打开使能设置,Enable的时候正常的进行延时,Disable的时候,保持延时的最后一个有效值。判断方式选择,推荐选择~=0,条件为真的时候,输出第一个输入,条件为假的时候,输出第三个输入。我们默认选择点乘就可以,最简单的。

ALongAuto的博客 7518

Java后端中的链路追踪:使用OpenTelemetry实现全链路监控

在现代的微服务架构中,链路追踪是监控和优化系统性能的关键技术。通过链路追踪,我们可以跟踪请求在系统中的流转,识别性能瓶颈,定位问题根源。本文将介绍如何在Java后端应用中使用OpenTelemetry实现全链路监控,包括具体的实现步骤和代码示例。通过集成OpenTelemetry,您可以实现全面的链路追踪,帮助您识别瓶颈和潜在问题,从而提升系统的可靠性和用户体验。OpenTelemetry是一个开源项目,旨在提供统一的工具集来收集、处理和导出应用程序的遥测数据,包括跟踪、度量和日志。

聚娃科技开发者博客 1726

MBD_入门篇_19_Simulink数学运算模块

atan2函数跟atan的区别是,atan2输入是两个值,atan输入是一个值,atan2可以输入象限的信息,但是atan是没有办法的。针对输入的每个元素的乘法运算。signedSqrt的输入值的符号对输出结果是有影响的,输入是什么符号,输出就是什么符号,根号是对输出的绝对值进行运算。数学函数模块,包含了一些常用的数学函数,比如exp,log,10^u,ln,square,pow,rem,mod等。波形显示如下,选择数量跟最终的波形有关系,数量越大,越接近原始的值,数量越小,精度损失会比较大。

ALongAuto的博客 3万+

Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecasting 论文笔记

Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecasting 论文笔记-----GCN在交通领域的应用(二) 一、论文翻译: 1、摘要: 及时准确地交通预测对于城市交通控制和指导具有至关重要的意义。由于交通流量的非线性和复杂性,传统的方法不能满足中长期预测任务的需求,并且往往会忽略时空数据的时间和空间依赖特性。在这篇论文中,为了处理在交通领域的时间序列预测问题...

cy_believ的博客 1916

解锁RK3588多屏异显:MIPI+HDMI+EDP混合输出全攻略

本文详细介绍了RK3588处理器在MIPI+HDMI+EDP混合输出配置中的技术实现与应用。作为一款高性能处理器,RK3588凭借其强大的图形处理能力,支持多屏异显功能,可满足智能安防、工业控制等领域的多屏显示需求。文章从硬件连接、设备树配置、内核驱动设置到显示参数调整,系统阐述了配置流程,并针对信号不稳定、显示模式不匹配等常见问题提供了解决方案。通过智能安防监控案例,展示了该技术在提高监控效率方面的实际应用价值。随着技术进步,RK3588多屏异显技术将在更多领域发挥重要作用,为开发者提供灵活多样的显示方案

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2431

我的MBD自学之路(Matlab, Simulink, Stateflow)

回顾这段时间的自学历程,简单地总结一下。 MATLAB知识框架 先广泛的阅读一些关于MATLAB基础知识、快速入门之类的文章,先掌握MATLAB知识框架。 从MATLAB产品上来看,MATLAB本身是基础,在此之上才有simulink仿真,再往上才有Stateflow。 因此,确定学习路线,分三个大的部分:MATLAB、SIMULINK、STATEFLOW。 再看看MAT...

booksyhay的专栏 3万+

UNet 改进(39):结合残差连接与CBAM注意力机制的unet模型

本文提出了一种改进的UNet架构,通过融合残差连接和CBAM注意力机制来增强医学图像分割性能。该网络保留UNet的U形结构,但将基础模块替换为ResidualBlock和CBAM的组合:残差块通过快捷连接解决梯度消失问题,CBAM模块结合通道和空间注意力机制突出重要特征。整体架构采用编码器-解码器设计,包含5个下采样和上采样阶段,通过跳跃连接融合多尺度特征。实验表明,这种改进显著提升了原始UNet的性能,特别适用于需要精细边界的医学图像分割任务。

2401_82355416的博客 1013

关于MBD开发简介

MBD全称是Model Based Design(基于模型设计),是一种以可视化模型开发为主的开发方式,区别于传统的以文本为媒介的代码开发。工程师的关注点由具体的代码层面转移到系统层面。MBD在汽车行业的软件开发中应用广泛,能在项目各个阶段提供显著优势:项目前期可以快速验证,中期确保软件质量,后期便于维护。这种方法不仅提升了工程师的开发效率,还加快了项目的开发进度。MBD开发方法不仅在汽车领域显示出强大的优势和广泛的应用前景,还在其他领域具有重要的应用潜力。

MLM888的博客 7896

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

MBD_入门篇_16_Simulink离散模块

Reset在delay作为某个函数运行的时候,新来的信号处理的时候,如果不进行Reset,那将会用上一个信号的最后一个值作为初始值,在这种情况下会多一个无效值,使我们运算有可能会出错。主要讲一下与延时模块相关的,其他的一些也是比较高阶的数学模块,我们在后期如果有机会讲到高级算法的时候再来看,入门篇就暂时不讲那么高阶的东西了。打开使能设置,Enable的时候正常的进行延时,Disable的时候,保持延时的最后一个有效值。可复位的延时模块,在基础的延时模块上勾选外部输入默认值以及外部复位的设置。

ALongAuto的博客 3810

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

MBD_入门篇_05_Simulink简介

Simulink是一个模块图环境,用于多域仿真以及基于模型的设计。Simulink与MATLAB相集成,能够在Simulink 中将MATLAB算法融入模型,还能将仿真结果导出至 MATLAB 做进一步分析。库浏览器中包含了常用模块,连续系统模块,离散系统模块,数学运算模块,逻辑模块,查表模块等等。mdl是以前的版本用的格式,现在的版本几乎都用的是slx格式。这几种方式不同版本之间的界面也有会有所区别,明白是创建的逻辑即可,选择自己习惯用的即可。库浏览器,包含了Simulink的模块。选择一种之前的版本。

ALongAuto的博客 3315

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

我的MBD学习之路

MBD即为Model Based Design 基于模型的设计。       国内的汽车行业使用Matlab\Simulink早已经不是什么新鲜事儿了,我还在读研的时候大家已经普遍的开始使用Matlab\Simulink来做数学模型开发、数据处理分析以及算法理论仿真。       在学校做项目的时候,那时候是用TI的DSP 2407,当时的Matlab是2007版,当时知道Simulink的库里有

基于模型的嵌入式开发学习笔记 2万+

基于S32K的MBD开发环境搭建

目录 1.概念简介 1.1 toolbox的下载 1.2 MCD toolbox描述 1.3 MBD toolbox描述 1.4 MCD工具箱和MBD工具箱的关系 1.5 在线调试工具FreeMaster 2.MBD开发环境搭建 2.1 安装setup.exe 2.2 安装freeMaster 2.3 注册并安装许可证 2.4 设置目标编译器 2.5 为MBD toolbox设置matlab路径 3.MBD开发示例 3.1 认识S32 MBD库 3.2 开发板设置 3....

aggio的专栏 7922

MBD讲解与实践 1.1 AutoSAR、ASPICE与MBD

AUTOSAR(AUTomotive Open System ARchitecture,汽车开放系统架构) 是行业领先的汽车制造商和供应商于2003年秋季提出的标准化倡议。--摘自Vector官网ASW(应用层)RTE(运行时环境)服务层抽象层(ECU抽象、微控制器抽象)、复杂驱动,其中除了ASW和RTE,统称BSW(基础软件)。AUTOSAR的大部分功能都在BSW,我们MBD开发只需关注ASW和RTE相关的知识即可,对其他部分感兴趣的朋友可以去查阅一下详细介绍AUTOSAR的相关文章。Aspi。

候鸟的BOBO 3287

MBD_入门篇_11_Matlab程序设计

if语法,if后面的条件表达式为真的时候,会执行if条件后面的语句command1。for循环是在for后面跟一个行向量,按照行向量的size去执行迭代的总次数,第n次迭代,行向量里的值更新为i(n)。try后面跟的命令,如果执行错误,会跳到catch后面执行。也可以只有if不带else,如果为真就执行if条件后面的语句command1。while后面的condition为真的时候,while循环就会执行,为假的时候,循环结束。按照顺序语句进行执行,最容易理解的结构,从前到后,从上到下。

ALongAuto的博客 1126

MBD讲解与实践 1.3 Arxml文件

在。在MBD开发中,无论是否基于AUTOSAR架构,利用Arxml文件可以帮助我们完成从架构到模型这一正向开发流程。首先从认识一个组件的Arxml文件开始,看一下这个文件中包含哪些信息,它又为什么能够对MBD开发产生帮助。这里我们以上一篇实验中的FDM组件的Arxml文件为例进行分析。打开Arxml文件的方式有很多,首先它是一种文本类的格式,因此用任意就可以打开(VSCode之类的代码软件都是支持的);另外Vector有专门的,只有那些购买了Vector产品的公司才有;最后就是网上的。

候鸟的BOBO 4033
上一篇: MBD_入门篇_07_Matlab常用命令
下一篇: MBD_入门篇_09_m脚本和函数
阿隆汽车
博客等级 码龄3年 3129粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值