首页 网站首页 商业资讯 技巧 查看内容

MBD的Simulink使用技巧⑪:详解数据对象与数据字典(上)

私域流量 技巧 2023-2-9 14:21 10211人围观

autoMBD比来公布了《autoMBD原创技术文章合集》

《合集》包括156页丰富的MBD入门根本和MBDT硬件支持包的利用,还包括基于MBD的机电控制算法开源项目——AMBD-MC,《合集》装备了丰富的视频讲授和大量的模子、文档和软件资本。获得方式、详情点击下面文章。

本期文章将先容数据工具(Data Objects)和数据字典(Data Dictionary)的根基概念和相关的建立方式。

点击以下链接,可以检察MBD的Simulink利用技能系列的往期文章:

  • MBD的Simulink利用技能①:Simulink代码天生的根基概念
  • MBD的Simulink利用技能②:详解代码天生中的模子与代码
  • MBD的Simulink利用技能③:虚拟子系统与原子子系统的代码天生
  • MBD的Simulink利用技能④:详解天生代码的结构与代码的天生流程
  • MBD的Simulink利用技能⑤:详解自动代码天生的设置与优化
  • MBD的Simulink利用技能⑥:代码天生方针设置工具
  • MBD的Simulink利用技能⑦:自动天生代码的集成方式
  • MBD的Simulink利用技能⑧:函数原型、传参的控制与点窜
  • MBD的Simulink利用技能⑧(续):函数接口封装的控制和点窜
  • MBD的Simulink利用技能⑨:代码数据范例的点窜和控制
  • MBD的Simulink利用技能⑩:数据存储类的利用方式

出格提醒:在本篇文章中利用到的.m剧本等文件,可以在autoMBD资本库的“姑且资本分享”文件夹中找到(资本序号为tA34)。资本库链接的获得可以在《autoMBD原创技术文章合集》中找到(见文章开首)。

1 写在前面

利用Simulink建模开辟,有一个很是重要的、进阶的思惟:数据(Data)和模子(Model)别分开辟和治理

这会带来诸多益处,这里总结首要有以下三点:

  • 自力性:有益于数据和模子分此外迭代开辟、治理;
  • 通用性:一份数据供多个模子利用,或一个模子快速变更分歧数据;
  • 操纵:可以经过.m剧本实现自动化测试和治理。

上述思惟无关乎MBD(代码天生),适用于一切的建模利用。对于初学者来说,他们常常只着眼于模子,而轻忽了数据的开辟和治理。出格是在大模子、复杂模子中,数据的开辟和治理显得尤其重要。

具体而言,在Simulink中数据即数据工具(Data Objects),而治理数据工具的调集被称为数据字典(Data Dictionary)

有的读者能够对数据工具还不太熟悉,在先容数据工具若何控制天生代码之前,会先先容数据工具和数据字典的一些根基概念和利用方式。

2 数据工具的根基概念和建立

一般而言,我们说起的数据(Data),它是一个调集概念;数据由多少的数据工具(Data Objects)组成,即数据工具是数据的根基元素

数据工具经过其属性(Properties)来描写和表征,例如称号、值、数据范例等。分歧的数据工具能够具有分歧的属性。

凡是把一组特定属性的组合称为类(Class)。一个数据工具只属于一个类,多个数据工具可以属于不异的类,一个数据调集可以有多个分歧的类。

加倍形象的例子以下图所示:




数据与数据工具的关系

上图中展现了数据和数据工具的一般关系,图中数据调集包括四个数据工具;分歧的色彩暗示数据工具具有分歧的属性,即图中包括三个类,数据工具C1C2属于同一个类。

Tips:后文将经过示例来展现数据工具的建立方式,相关剧本可以在autoMBD资本库的“姑且资本分享”文件夹中找到(资本序号为tA34)。

2.1 建立MATLAB数据工具

在MATLAB的号令行中输入以下代码:

a = 1;

初学者会以为,运转获得了一个名为a的变量,它的值为1。

进阶一点,从数据的角度来了解,我们获得一个数据调集,其中包括一个数据工具,该数据工具的称号为a,值为1,数据范例为double(默许),维度为1x1(默许),值域为实数域(默许)。

Tips:了解角度分歧,所把握的信息也就分歧。“变量”或“数据工具”是从分歧的角度来描写数据。

上述语句a = 1虽然简单,但在MATLAB中,就已经实现了数据工具的建立。

上述获得的数据工具a,属于MATLAB Variable类,该类是MATLAB中最简单、最通用的类。MATLAB Variable类具体属性以下:

  • 称号
  • 数据范例
  • 维度
  • 值域

MATLAB Variable类对应的数据工具,假如数据范例分歧,其具体建立方式还会有所分歧。下面给出一些常见的MATLAB Variable类、分歧数据范例属性的数据工具建立方式(.m剧本):

% autoMBD示例剧本
% 展现MATLAB variable class的根基建立方式
% 建立时候2023-02-04

%% 清空数据
clear; clc;

%% 数值范例
a1 = 1; % 普通数值,默许double
a2 = single(1); % 指定数据范例single
a3 = [1 2 3; 4 5 6]; % 数组数值
a4 = 1 + 2i; % 复数数值

%% 字符串范例
b1 = 'I am a string!'; % 字符数组,留意为单引号
b2 = "I am a strings!";% 字符串数组,留意为双引号

%% 结构体范例
c1.elm1 = 1; % 经过索引符"."界说结构体
c1.elm2 = 2; % 经过索引符"."界说结构体
c2 = struct('elm1', 1, 'elm2', 2); % 经过struct()函数界说结构体

%% 元胞数组范例
d = {a1, a1, b1, b2}; % 界说元胞数组

%% 时序范例
ts = timeseries(); % 界说时序数据工具

%% 在Model Explorer显现成果
sfexplr;
Tips:这里只展现了常见数据的建立,还有一些其他的数据范例,以及分歧的建立方式,读者可以在MATLAB的Help文件中收索关键词“数据范例”,自行进修。

在工作空间中,MATLAB Variable类的分歧数据范例,会显现分歧的图标,以下图所示:




MATLAB Variable类的图标

在Model Explorer中(经过语句sfexplr翻开),可以加倍方便地治理数据工具检察数据工具的属性,以下图所示:




Model Explorer检察数据工具

留意,在Model Explorer中,MATLAB Variable数据工具除了Value属性,其他属性都只是可读 ,不成编辑。

2.2 建立Simulink数据工具

上文先容的MATLAB Variables类数据工具是最根基的数据工具,在MATLAB和Simulink中都是通用的。

针对Simulink数据工具,有其独有的Simulink类,常用的有以下几个类:

  • Simulink.Parameter
  • Simulink.Signal
  • Simulink.AliasType
  • Simulink.NumericType
  • Simulink.Bus

Simulink类不能像MATLAB类那样,经过间接赋值来建立数据工具,需要经过类的相关函数来建立

Tips:类的相关函数,在MATLAB中也被称为“方式”,不外我还是习惯称为“函数”。

例如,要建立一个Simulink.Parameter类的数据工具,建立方式以下:

paramObj = Simulink.Parameter;

这里的Simulink.Parameter是一个返回对应数据工具的函数,如此这样就建立好了一个名为paramObj的Simulink.Parameter数据工具。

Simulink.Parameter类的属性包括:

  • CoderInfo
  • Complexity
  • DataType
  • Description
  • Dimension
  • Max
  • Min
  • Unit
  • Value

可以看到,它的属性比根本的MATLAB Variable类多,出格是包括了CoderInfo属性,可以控制代码的天生。

要留意的是,刚刚建立的数据工具仅为一个空工具,它的部分属性要停止适当设备后才能利用。

下面给一个对Simulink.Parameter数据工具停止设备的例子:

% 设备属性参数
paramObj.Value = 1;
paramObj.DataType = 'uint16';
paramObj.Max = 10000;
paramObj.CoderInfo.StorageClass = 'ExportedGlobal';

上述剧本中,对Simulink.Parameter数据工具的部分属性停止了设备,包括前面文章先容的极为强大的存储类

要留意,属性的设备要满足该属性的要求,例如paramObj.DataType就只能设备为'uint16', 'double', 'singl', ...等Simulink支持的数据范例。

不熟悉类的人能够会比力困惑:怎样晓得一个类有哪些属性可以设备?怎样晓得特定属性的设备要求是什么?

这就要借助强大的MATLAB Help文档了。对于一个不熟悉的类,间接在Help工具中检索该类的称号,找到该类的具体页面,以下所示:




在Help文档中查找类

在类的具体先容页面,找到属性相关内容,该题目下具体罗列了该类的一切属性,以及每个属性的感化、设备要求等。

有的详情页中还包括Example示例,可供参考进修。以下所示:




阅读类的属性条目



阅读类的属性信息(以DataType为例)

下面给出一些Simulink类和数据工具的常用方式,供读者参考:

% autoMBD示例剧本
% 展现Simukink class的根基建立方式
% 建立时候2023-02-04

%% 清空数据
clear; clc;

%% Simulink.Parameter类
paramObj = Simulink.Parameter;
% 设备属性参数
paramObj.Value = 1;
paramObj.DataType = 'uint16';
paramObj.Max = 10000;
paramObj.CoderInfo.StorageClass = 'ExportedGlobal';

%% Simulink.Signal类
signalObj = Simulink.Signal;
% 设备属性参数
signalObj.SampleTime = 0.001;
signalObj.DataType = 'double';
signalObj.Max = 10000;
signalObj.CoderInfo.StorageClass = 'ImportedExtern';

%% Simulink.NumericType类
typeObj = Simulink.NumericType;
% 设备属性参数
typeObj.DataTypeMode = 'Boolean';

%% Simulink.AliasType类
aliasObj_float = Simulink.AliasType;
% 设备属性参数
aliasObj_float.BaseType = 'single';

%% Simulink.Bus类
busObj = Simulink.Bus;
% 建立子类
elm1 = Simulink.BusElement;
elm1.Name = 'BusElm1';
elm1.DataType = 'single';
elm2 = Simulink.BusElement;
elm2.Name = 'BusElm2';
% 设备属性参数
busObj.Elements = [elm1 elm2];

%% 在Model Explorer显现成果
sfexplr;

上述的剧本中,一共建立了五个分歧的数据工具,并对部分属性停止了设备。

Simulink类和MATLAB类除了属性的分歧,其操纵性也分歧。在Model Explorer中,可以对Simulink类数据工具停止更多的操纵。

例如,可以经过Model Explorer的属性窗口对Simulink类数据工具停止点窜和控制,以下所示:




在Model Explorer中点窜Simulink类

除了经过剧本建立数据工具,也可以在Model Explorer的工具栏中,经过“Add”菜单建立数据工具。由“Add”菜单建立的数据工具和剧本建立的是一样的。

出格留意,经过“Add”菜单建立的数据工具,一定要保存下来(保存为.mat格式),否则封闭MATLAB/Simulink后,建立的数据工具就会丧失。

Tips:少许数据工具是可以用“Add”菜单来建立,但大量数据工具还是保举剧本的方式来建立。

“Add”菜单以下所示:




在Model Explorer中增加Simulink类

“Add”菜单不但仅可以建立MATLAB Variable和Simulink数据工具,还可以建立Configuration工具,甚至自界说工具。感爱好的读者可以自行研讨这部分功用。

3 数据字典的根基概念和建立

上述的示例中,运转剧本后建立的数据工具,被放置在Base Workspace中。一般情况下,Simulink模子可以间接利用Base Workspace中的数据工具。

可是当数据工具很多、模子也很多的时辰,分歧模子利用的数据工具也纷歧样,这时把所稀有据工具都放在Base Workspace中,明显不是一个好的方式。

数据字典(Data Dictionary)这时辰便可以派上用处了,数据字典的感化就是用来存储和治理建立的数据工具

3.1 数据字典的根基概念

数据字典本质上也是一个工具(Object),只不外不是普通的数据工具,它的类为:

  • Simulink.data.Dictionary

它还包括三个重要的子类

  • Simulink.data.dictionary.Section
  • Simulink.data.dictionary.Entry
  • Simulink.data.dictionary.EnumTypeDefinition

数据字典的Section是用来保存“工具”的地区,不但仅是数据工具,也包括其他工具(例如Configuration、Embedded Coder Dictionary等)。分歧的工具被放置在分歧的地区,数据字典包括以下四个地区:

  • Design Data
  • Configurations
  • Embedded Coder Dictionary
  • Other Data

我们经常用到的数据工具被保存在“Design Data”地区傍边,可以就把它了解为一个零丁的Workspace,可供某一个模子零丁利用。

在数据字典中,“工具”被称为Entry(可以翻译为“项”)。所以Section中的每一个工具就是一个Entry。

第三个重要的子类是列举范例(Enum Type)的界说。在Simulink中,列举范例是一个很是特别的范例。

可是,在天生代码中不倡议利用Simulink列举范例,倡议利用系统列举范例

系统列举范例的建立方式会在后续的文章中停止先容。关于数据字典的根基信息就先容到这里,更多关于数据字典的内容,读者可以检察官方Help文档停止进修。

Tips:数据字典相关内容很是丰富,上述只是很是根本的先容。读者要想熟练利用数据字典,需要在理论中多多练习,勤查Help文档。

3.2 建立和治理数据字典

下面给出一个简单的示例剧本,展现若何建立和点窜数据字典,实现对数据工具的治理:

% autoMBD示例剧本
% 展现Data Dictionary的根基建立方式
% 建立时候2023-02-04

%% 清空数据
clear; clc;

%% 建立数据字典
if (exist('myDictionary.sldd', 'file'))
ddObj = Simulink.data.dictionary.open('myDictionary.sldd');
else
ddObj = Simulink.data.dictionary.create('myDictionary.sldd');
end

%% 新建一个数据工具paramObj,属Simulink.Parameter类
paramObj = Simulink.Parameter;
% 设备属性参数
paramObj.Value = 1;
paramObj.DataType = 'uint16';
paramObj.Max = 10000;
paramObj.CoderInfo.StorageClass = 'ExportedGlobal';

%% 将建立的数据工具增加到数据字典中
% 获得数据字典的'Design Data'地区
listEntry(ddObj);
sectionObj = getSection(ddObj, 'Design Data');

if (exist(sectionObj, 'paramObj'))
paramObjEntry = getEntry(sectionObj, 'paramObj');
else
paramObjEntry = addEntry(sectionObj, 'paramObj', paramObj);
end

saveChanges(ddObj);

%% 翻开Model Explorer
% 在Model Explorer中显现数据字典
show(ddObj);

上述的剧本中,展现了若何建立一个数据字典,利用的函数为:

  • Simulink.data.dictionary.open()
  • Simulink.data.dictionary.create()

而且在数据字典中增加了一个数据工具paramObj。在数据字典中,每一个数据工具被称为Entry,所以增加数据工具的函数为addEntry()。可以在Model Explorer中检察我们新建的数据字典,以下所示:




Model Explorer中的数据字典

可以看到前文先容的四个地区,假如只看到了“Design Data”地区,可以尝试对数据字典右键单击,将取消Empty Section隐藏,以下所示:




取消Empty Section隐藏

“Design Data”和本来的Base Workspace功用上述几近一样的,所以在Base Workspace能实现的操纵,在“Design Data”一样能做。例如:经过工具栏中的“Add”菜单增加数据工具,这里不再继续先容。

一样地,大量数据工具的操纵还是倡议利用剧本,而非点击“Add”菜单。在数据字典中利用“Add”菜单,一样要留意保存点窜,免得丧失。

可以看到,建立和治理数据字典的剧本已经变得比力复杂了,最少需要对数据字典的类和相关函数很是熟悉,才能写出想要的功用。

Tips:这也是为什么一向夸大,要完全把握MBD开辟,一定需要纯代码开辟的才能。不外.m剧本比起C说话还是简单很多。

4 本期小结

本期文章先容了数据工具和数据字典的根基概念和建立方式,但还没有将数据工具和数据字典与模子关联起来。关联起来以后,才能发挥数据工具对代码天生的控建造用。

这部份内容将鄙人一期中停止先容,接待延续关注autoMBD。


其他相关文章:

高端人脉微信群

高端人脉微信群

人脉=钱脉,我们相信天下没有聚不拢的人脉,扫码进群找到你所需的人脉,对接你所需的资源。

商业合作微信

商业合作微信

本站创始人微信,13年互联网营销经验,擅长引流裂变、商业模式、私域流量,高端人脉资源丰富。

我有话说......
  • exkeen 2023-2-9 14:22
    关于为啥使用数据字典,除了您说的数据层级管理以外,我认为还有两个原因:1 Mathwork的工程师向我推荐使用这种方式管理数据;2 Base workspace和model workspace都是动态工作空间,而数据字典是静态工作空间,就像代码有静态代码一样,有一些数据适合静态保存(初始值、数据格式、参数等)。当然文章中还提到了其他好处,这里不赘述。其他我同意您的指点,文章中有些地方描述不准确我会进行修改和补充,再次感谢。[爱][爱]
  • 一声笑 2023-2-9 14:21
    感谢指点,您比我懂得更多、更专业,我的文章是比较基础的。我也会更加深入学习,感谢![爱]
  • 今早我梦醒了坎 2023-2-9 14:21
    看得出来lz对MATLAB OOP和SIMULINK都有不错的认识,我也有幸研读了这些英文版文档。下面举几个例子说说看法请勿介怀。MATLAB 提供了superclasses()/methods()/properties()/events()等函数直接查看类定义中的components;当然也可以访问类的元数据来查看类定义,例如md=?Simulink.Parameter; md.SuperclassList.Name。实际上,MATLAB documentation上通常只列出了public properties/methods。Simulink.data.dictionary.Section, Simulink.data.dictionary.Entry, Simulink.data.dictionary.EnumTypeDefinition这三个类都不是Simulink.data.Dictionary的子类,前两个还是句柄类。Base workspace, model workspace都可以存储模型数据,为何还要data dictionary?data dictionary最大的作用是organize data hierarchically,以便为model referencing提供数据。实际上MATLAB和SIMULINK的绝大部分代码都是基于MATLAB OOP编写的,要充分理解它们还是要从OOP的角度以OOP的语言去解读,我更倾向于建议lz都英文版。

相关推荐

解密书法高手惯用的5个技巧,立竿见影

解密书法高手惯用的5个技巧,立竿见影

为何那些书法高手写出的字格外有特点?或者说格外漂亮?肯定是有技巧的。在这里,心灵

8个高情商说话技巧

8个高情商说话技巧

所谓情商高,就是会说话,情商与说话是紧密相连、互为体现的。掌握高情商的说话技巧,

3个说话技巧,让你开口就能赢

3个说话技巧,让你开口就能赢

无论说话还是写文章,做报告,抓不住重点真的会错失很多机会,很多关键时刻,也只有一

121页PPT,让人喜欢你的25个沟通技巧,职场脱颖而出的沟通秘诀

121页PPT,让人喜欢你的25个沟通技巧,职场脱颖而出的沟通秘诀

文 | 明哥,前麦肯锡战略咨询顾问,埃森哲管理咨询顾问,一个喜欢用思维导图架构PPT的

八个实用的技巧,提升你的语言交流能力,让你表达得更精准

八个实用的技巧,提升你的语言交流能力,让你表达得更精准

在生活中,我们可能会与各种各样的人打交道。而且你我都知道,提高口头交流技巧,可以

多少人败在不会说话上,情商高的人,说话都会这5个技巧!

多少人败在不会说话上,情商高的人,说话都会这5个技巧!

点击右上角【关注】职视角头条号,分享职场干货,提升职场竞争力。本文共1268字,阅读

开车高手整理了10年的驾驶技巧,全是你最需要的! …

开车高手整理了10年的驾驶技巧,全是你最需要的! …

车安全的基础是技术和经验,好的驾驶技术更是一种艺术。下面是开车高手辛苦一年整理的

Excel表格中最经典的36个小技巧,全在这儿了

Excel表格中最经典的36个小技巧,全在这儿了

本篇是小编以前从海量excel技巧中,精选出的最贴近实用的技巧,共36个,重新配图配文

让女生疯狂的8个接吻技巧,你知道吗?

让女生疯狂的8个接吻技巧,你知道吗?

兄弟们大家好,接下来又到了甜心分享干货时间了!你觉得自己很会接吻吗?今天呢,甜心

不定积分大集合——技巧篇(十分详细)

不定积分大集合——技巧篇(十分详细)

写在前面的话:在数学分析的计算题当中,我们最常见的就是求极限,求导,求不定积分。

女性如何提高床上技巧?

女性如何提高床上技巧?

性生活的享受不仅仅只让对方付出,其实女人也要学会床上的技能,这样才能让自己拥有高

手把手教你查找酒店偷拍摄像头,防偷拍

手把手教你查找酒店偷拍摄像头,防偷拍

去年12月,网友花总用11分钟视频,曝光了五星级酒店“杯子的秘密”。视频在互联网上播

雅思一对一培训机构推荐!选对真的能原地出分

雅思一对一培训机构推荐!选对真的能原地出分

☆实话说:上了一对一,成绩突飞猛进很多,直接飙到7.5,雅思报班真的挺值得的。说原

基本的接吻技巧,男人必学!

基本的接吻技巧,男人必学!

“Kiss”的最基本的四种吻技:提示:吻不单只是单纯的唇与唇之间的接触,真正的吻,需

108个撩人小技巧,把男票撩到腿软!(建议收藏)

108个撩人小技巧,把男票撩到腿软!(建议收藏)

文末更多干货,赶快收藏滑到最后。 撩与被撩其实都是相爱的存在,生活里多一点情趣,

很多绘画初学者不知道的18个技巧?

很多绘画初学者不知道的18个技巧?

学习素描不是先从技法的循序渐进,而是观察能力的循序渐进。也就是说,首先把自己的眼

六级听力200+最强应试技巧+备考攻略

六级听力200+最强应试技巧+备考攻略

首先我们了解一下六级听力分为几个项目,每个项目分值是多少,有什么特点(已经非常了

很全很实用 60个经典的电脑技巧

很全很实用 60个经典的电脑技巧

2、在保存网页前,可以按一下'ESC'键(或脱机工作)再保存,这样保存很快3、用

电脑小白必学的11个win10使用技巧

电脑小白必学的11个win10使用技巧

Hello大家好,我是小凌~Win10发布到现在已经4年了最开始大家使用都在吐槽到现在更新

VMWare 虚拟机使用技巧

VMWare 虚拟机使用技巧

VMWare Workstation作为最常用的个人版虚拟化软件广受工程师的喜爱,其基于Windows环

TA还没有介绍自己。

最近内容

电话咨询: 15924191378
添加微信