autoMBD比来公布了《autoMBD原创技术文章合集》 《合集》包括156页丰富的MBD入门根本和MBDT硬件支持包的利用,还包括基于MBD的机电控制算法开源项目——AMBD-MC,《合集》装备了丰富的视频讲授和大量的模子、文档和软件资本。获得方式、详情点击下面文章。 本期文章将先容数据工具(Data Objects)和数据字典(Data Dictionary)的根基概念和相关的建立方式。 点击以下链接,可以检察MBD的Simulink利用技能系列的往期文章:
出格提醒:在本篇文章中利用到的.m剧本等文件,可以在autoMBD资本库的“姑且资本分享”文件夹中找到(资本序号为tA34)。资本库链接的获得可以在《autoMBD原创技术文章合集》中找到(见文章开首)。 1 写在前面利用Simulink建模开辟,有一个很是重要的、进阶的思惟:数据(Data)和模子(Model)别分开辟和治理。 这会带来诸多益处,这里总结首要有以下三点:
上述思惟无关乎MBD(代码天生),适用于一切的建模利用。对于初学者来说,他们常常只着眼于模子,而轻忽了数据的开辟和治理。出格是在大模子、复杂模子中,数据的开辟和治理显得尤其重要。 具体而言,在Simulink中数据即数据工具(Data Objects),而治理数据工具的调集被称为数据字典(Data Dictionary)。 有的读者能够对数据工具还不太熟悉,在先容数据工具若何控制天生代码之前,会先先容数据工具和数据字典的一些根基概念和利用方式。 2 数据工具的根基概念和建立一般而言,我们说起的数据(Data),它是一个调集概念;数据由多少的数据工具(Data Objects)组成,即数据工具是数据的根基元素。 数据工具经过其属性(Properties)来描写和表征,例如称号、值、数据范例等。分歧的数据工具能够具有分歧的属性。 凡是把一组特定属性的组合称为类(Class)。一个数据工具只属于一个类,多个数据工具可以属于不异的类,一个数据调集可以有多个分歧的类。 加倍形象的例子以下图所示: 数据与数据工具的关系 上图中展现了数据和数据工具的一般关系,图中数据调集包括四个数据工具;分歧的色彩暗示数据工具具有分歧的属性,即图中包括三个类,数据工具C1和C2属于同一个类。 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类不能像MATLAB类那样,经过间接赋值来建立数据工具,需要经过类的相关函数来建立。 Tips:类的相关函数,在MATLAB中也被称为“方式”,不外我还是习惯称为“函数”。 例如,要建立一个Simulink.Parameter类的数据工具,建立方式以下: paramObj = Simulink.Parameter;这里的Simulink.Parameter是一个返回对应数据工具的函数,如此这样就建立好了一个名为paramObj的Simulink.Parameter数据工具。 Simulink.Parameter类的属性包括:
可以看到,它的属性比根本的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),只不外不是普通的数据工具,它的类为:
它还包括三个重要的子类:
数据字典的Section是用来保存“工具”的地区,不但仅是数据工具,也包括其他工具(例如Configuration、Embedded Coder Dictionary等)。分歧的工具被放置在分歧的地区,数据字典包括以下四个地区:
我们经常用到的数据工具被保存在“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); 上述的剧本中,展现了若何建立一个数据字典,利用的函数为:
而且在数据字典中增加了一个数据工具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。 其他相关文章: |
为何那些书法高手写出的字格外有特点?或者说格外漂亮?肯定是有技巧的。在这里,心灵
所谓情商高,就是会说话,情商与说话是紧密相连、互为体现的。掌握高情商的说话技巧,
无论说话还是写文章,做报告,抓不住重点真的会错失很多机会,很多关键时刻,也只有一
文 | 明哥,前麦肯锡战略咨询顾问,埃森哲管理咨询顾问,一个喜欢用思维导图架构PPT的
在生活中,我们可能会与各种各样的人打交道。而且你我都知道,提高口头交流技巧,可以
点击右上角【关注】职视角头条号,分享职场干货,提升职场竞争力。本文共1268字,阅读
车安全的基础是技术和经验,好的驾驶技术更是一种艺术。下面是开车高手辛苦一年整理的
本篇是小编以前从海量excel技巧中,精选出的最贴近实用的技巧,共36个,重新配图配文
兄弟们大家好,接下来又到了甜心分享干货时间了!你觉得自己很会接吻吗?今天呢,甜心
写在前面的话:在数学分析的计算题当中,我们最常见的就是求极限,求导,求不定积分。
性生活的享受不仅仅只让对方付出,其实女人也要学会床上的技能,这样才能让自己拥有高
去年12月,网友花总用11分钟视频,曝光了五星级酒店“杯子的秘密”。视频在互联网上播
☆实话说:上了一对一,成绩突飞猛进很多,直接飙到7.5,雅思报班真的挺值得的。说原
“Kiss”的最基本的四种吻技:提示:吻不单只是单纯的唇与唇之间的接触,真正的吻,需
文末更多干货,赶快收藏滑到最后。 撩与被撩其实都是相爱的存在,生活里多一点情趣,
学习素描不是先从技法的循序渐进,而是观察能力的循序渐进。也就是说,首先把自己的眼
首先我们了解一下六级听力分为几个项目,每个项目分值是多少,有什么特点(已经非常了
2、在保存网页前,可以按一下'ESC'键(或脱机工作)再保存,这样保存很快3、用
Hello大家好,我是小凌~Win10发布到现在已经4年了最开始大家使用都在吐槽到现在更新
VMWare Workstation作为最常用的个人版虚拟化软件广受工程师的喜爱,其基于Windows环
声明:本站内容由网友分享或转载自互联网公开发布的内容,如有侵权请反馈到邮箱 1415941@qq.com,我们会在3个工作日内删除,加急删除请添加站长微信:15924191378
Copyright @ 2022-2024 私域运营网 https://www.yunliebian.com/siyu/ Powered by Discuz! 浙ICP备19021937号-4