CDFX 文件快速入门 您所在的位置:网站首页 asam是什么意思 CDFX 文件快速入门

CDFX 文件快速入门

#CDFX 文件快速入门 | 来源: 网络整理| 查看: 265

导入 CDFX 文件

使用 cdfx 函数从 CDFX 文件导入数据。

cdfxObj = cdfx("CDFXExampleFile.cdfx")cdfxObj = CDFX with properties: Name: "CDFXExampleFile.cdfx" Path: "/tmp/Bdoc23a_2181783_2332753/tp3fb84b34/vnt-ex38787800/CDFXExampleFile.cdfx" Version: "CDF20" 可视化标定数据

CDFX 文件包含有关车辆 ECU(系统)及其参数(实例)的信息。使用 instanceList 和 systemList 以表形式可视化标定数据。这些函数还允许基于实例或系统短名称进行过滤。

iList = instanceList(cdfxObj)iList=4×6 table ShortName System Category Value Units FeatureReference ____________________________ _______________ __________ _________________ _______ _________________ "ASAM.C.SCALAR.GAIN" "ExampleSystem" "VALUE" {[ 3]} "gain" "FunctionScalar" "ASAM.C.SCALAR.BITMASK_0001" "ExampleSystem" "BOOLEAN" {[ 1]} "" "FunctionScalar" "ASAM.C.MAP" "ExampleSystem" "MAP" {1x1 struct } "" "Sample_Model_13" "ASAM.C.COM_AXIS" "ExampleSystem" "COM_AXIS" {[-9 -8 -5 -3 0]} "hours" ""

如果要基于所需的短名称过滤表,请将字符串作为第二个参数传递。

iListArray = instanceList(cdfxObj, "ASAM.C.SCALAR")iListArray=2×6 table ShortName System Category Value Units FeatureReference ____________________________ _______________ _________ _____ ______ ________________ "ASAM.C.SCALAR.GAIN" "ExampleSystem" "VALUE" {[3]} "gain" "FunctionScalar" "ASAM.C.SCALAR.BITMASK_0001" "ExampleSystem" "BOOLEAN" {[1]} "" "FunctionScalar"

默认的查询行为会将实例短名称与搜索字符串进行部分匹配,然后返回匹配实例表。要过滤实例名称的精确匹配项,请使用 ExactMatch 名称-值对组。

iListArrayExact = instanceList(cdfxObj, "ASAM.C.SCALAR.BITMASK_0001", "ExampleSystem", "ExactMatch", true)iListArrayExact=1×6 table ShortName System Category Value Units FeatureReference ____________________________ _______________ _________ _____ _____ ________________ "ASAM.C.SCALAR.BITMASK_0001" "ExampleSystem" "BOOLEAN" {[1]} "" "FunctionScalar"

对于包含多个 ECU 系统的标定数据的 CDFX 文件,systemList 可用于在高级别查看每个系统的内容。

sList = systemList(cdfxObj)sList=1×3 table ShortName Instances Metadata _______________ _____________________________________________________________________________________________ ________ "ExampleSystem" {["ASAM.C.SCALAR.GAIN" "ASAM.C.SCALAR.BITMASK_0001" "ASAM.C.MAP" "ASAM.C.COM_AXIS"]} "NO_VCD" 检查和修改简单标定参数

使用 getValue 从 CDFX 对象中提取实例的值。使用 setValue 修改实例的值。

iValueScalar = getValue(cdfxObj, "ASAM.C.SCALAR.GAIN")iValueScalar = 3 iValueScalarNew = iValueScalar + 20; setValue(cdfxObj, "ASAM.C.SCALAR.GAIN", iValueScalarNew); iValueScalarNew = getValue(cdfxObj, "ASAM.C.SCALAR.GAIN")iValueScalarNew = 23 使用更复杂的参数类型

某些实例类别并不只是包含一个物理值。这些实例通常是根据轴缩放的多维数组。对这些实例调用 getValue 将返回一个结构体,其中包含所有轴,每个轴对应一个字段(不同于 PhysicalValue)。

要查看 CUBOID 实例,请先调用 getValue,然后检查返回的结构体的属性。请注意,还存在与每个轴相关联的其他数据,包括轴的类型、其物理值以及轴值是否从 CDFX 对象的另一个实例中引用。

iValueMap = getValue(cdfxObj, "ASAM.C.MAP")iValueMap = struct with fields: PhysicalValue: [5x5 double] Axis1: [1x1 struct] Axis2: [1x1 struct] disp(iValueMap.PhysicalValue) 2 15 27 40 55 5 17 30 42 57 7 20 32 47 60 10 22 35 50 62 12 25 37 52 65 disp(iValueMap.Axis1) ReferenceName: "" Category: "STD_AXIS" PhysicalValue: [0 63 126 189 252] IsReferenced: 0 disp(iValueMap.Axis2) ReferenceName: "ASAM.C.COM_AXIS" Category: "COM_AXIS" PhysicalValue: [-9 -8 -5 -3 0] IsReferenced: 1

我们还可以使用 MATLAB 绘图函数可视化实例值。对于多维数组,可使用轴结构体的物理值来定义绘图上的轴。

surf("ZDataSource", "iValueMap.PhysicalValue", "XDataSource", "iValueMap.Axis1.PhysicalValue", "YDataSource", "iValueMap.Axis2.PhysicalValue") refreshdata;

修改此实例的物理值的方式与修改标量的方式相同。更新结构体的物理值字段,并将其传回 setValue。

iValueMap.PhysicalValue(:, 1) = iValueMap.PhysicalValue(:, 1)*2; setValue(cdfxObj, "ASAM.C.MAP", iValueMap);

现在我们可以观察到更改已提交到工作区中的 CDFX 对象。

iValueMapNew = getValue(cdfxObj, "ASAM.C.MAP")iValueMapNew = struct with fields: PhysicalValue: [5x5 double] Axis1: [1x1 struct] Axis2: [1x1 struct] disp(iValueMapNew.PhysicalValue) 4 15 27 40 55 10 17 30 42 57 14 20 32 47 60 20 22 35 50 62 24 25 37 52 65

要修改此实例的轴值,我们首先需要知道要修改的轴是否被引用。这可以通过检查每个轴结构体的 IsReferenced 字段来确定。如果未引用轴,我们只需修改轴结构体的 PhysicalValue 字段,并将顶层结构体传回 setValue。

disp(iValueMapNew.Axis1.PhysicalValue) 0 63 126 189 252 iValueMapNew.Axis1.PhysicalValue = iValueMapNew.Axis1.PhysicalValue*10; setValue(cdfxObj, "ASAM.C.MAP", iValueMapNew); iValueMapNewAxis = getValue(cdfxObj, "ASAM.C.MAP"); disp(iValueMapNewAxis.Axis1.PhysicalValue) 0 630 1260 1890 2520

但是,某些轴不是在实例本身上定义的,而是从另一个实例引用的。有些特定的实例类别用于表示参考轴值(COM_AXIS、RES_AXIS 和 CURVE_AXIS)。尝试在引用了轴的实例中直接修改引用轴将导致错误。解决办法是直接在轴实例本身上更新值。关于轴是否使用引用值的信息,包括被引用实例的短名称,可以在顶层结构体的轴字段中找到。

iValueCommonAxis = getValue(cdfxObj, iValueMapNewAxis.Axis2.ReferenceName)iValueCommonAxis = 1×5 -9 -8 -5 -3 0 iValueCommonAxis(:) = 1:5; setValue(cdfxObj, iValueMapNewAxis.Axis2.ReferenceName, iValueCommonAxis);

现在我们已修改原始实例,可以观察到这些更改反映在引用实例中。

iValueMapNew = getValue(cdfxObj, "ASAM.C.MAP")iValueMapNew = struct with fields: PhysicalValue: [5x5 double] Axis1: [1x1 struct] Axis2: [1x1 struct] iValueMapNew.Axis2.PhysicalValueans = 1×5 1 2 3 4 5 将标定数据导出到文件

使用 CDFX write 函数,您可以写回到同一文件,或者通过指定文件路径写到新文件。

write(cdfxObj, "NewExampleFile.cdfx");


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有