结合使用 cdfx 文件和 simulink 数据字典 -凯发k8网页登录
此示例说明如何将来自 asam cdfx 文件的标定数据存储在数据字典中,并将这些值用作 simulink® 模型的参数。
导入数据
使用 函数导入标定数据。
cdfxobj = cdfx("cdfxexamplefile.cdfx")
cdfxobj = cdfx with properties: name: "cdfxexamplefile.cdfx" path: "/mathworks/home/rollinb/documents/matlab/examples/vnt-ex73237310-20190405222527/cdfxexamplefile.cdfx" version: "cdf20"
使用标定数据创建和填充数据字典
使用 将所需参数提取到 matlab® 工作区中。
dictname = "cdfxexampledd.sldd"
dictname = "cdfxexampledd.sldd"
检查字典是否已在工作文件夹中。
if isfile(dictname) % if data dictionary exists, open it. ddict = simulink.data.dictionary.open(dictname) else % if dictionary does not exist, create it and populate with cdfx data. ddict = simulink.data.dictionary.create(dictname) ddsection = getsection(ddict, "design data") addentry(ddsection, "gainparam", getvalue(cdfxobj, "asam.c.scalar.gain")) addentry(ddsection, "mapparam", getvalue(cdfxobj, "asam.c.map")) end
ddict = dictionary with properties: datasources: {0×1 cell} hasaccesstobaseworkspace: 0 enableaccesstobaseworkspace: 0 hasunsavedchanges: 0 numberofentries: 2
显示数据字典的内容。
listentry(ddict)
section name status datasource lastmodified lastmodifiedby class design data gainparam cdfxexampledd.sldd 2019-04-05 22:33 rollinb double design data mapparam cdfxexampledd.sldd 2019-04-05 22:33 rollinb struct
将数据字典链接到 simulink 模型
打开 simulink 模型,然后使用 set_param
将该数据字典链接到您的模型。这将允许模型访问在字典中定义的值。
open_system("cdfxslddmodel.slx");
cdfxmdl = gcs
cdfxmdl = 'cdfxslddmodel'
set_param(gcs, "datadictionary", dictname)
我们现在可以关闭与数据字典的连接。
close(ddict)
查找-增益模型
该模型包含:
2-d lookup table 模块,表示 cdfx 文件中的
asam.c.map
参数。“table data”字段,表示实例的物理值;“breakpoint”字段,表示轴的物理值。gain 模块,表示 cdfx 文件中的
asam.c.scalar.gain
参数。to workspace 模块,用于记录仿真数据。
indexing logic 子系统
indexing logic 子系统使用 asam.c.map
参数轴的物理值以及信号路由模块和触发子系统,来生成查找索引的所有有效组合。如果您需要在标定参数的全部可能输入值范围内进行测试,这种配置会很有用。
在 matlab 中记录输出数据
仿真的输出由 to workspace 模块发送到 matlab,在那里它存储为时间序列对象,称为 mapdata
。现在可以在 matlab 工作区中检查和可视化这些数据。
sim(cdfxmdl);
plot(mapdata)
title("simulation output for asam.c.map")
% 凯发官网入口首页 copyright 2018-2021 the mathworks, inc.