主要内容

加载数据到根级输入端口

您可以使用以下模块之一将数据从工作区加载到根级导入:

属性的值从工作区导入数据配置参数>数据导入/导出>输入参数。

提示

要将许多信号导入到根级输入端口,请考虑使用根导入映射器工具。有关更多信息,请参见映射根输入端口信号数据

控件还可以从工作区导入数据从工作空间块。具体操作请参见从工作空间文件和为输入测试用例加载数据

指定输入数据

您可以使用输入配置参数。要将许多信号加载到根级输入端口,请考虑使用根导入映射工具,该工具在输入参数使用工具映射的数据。有关详细信息,请参见使用根导入映射工具映射数据

  1. 选择配置参数>数据导入/导出>输入参数。

    笔记

    使用输入配置参数独立于的设置格式保存日志数据的配置参数。

  2. 在相邻的编辑框中输入外部输入规范并单击申请.有关可以指定的数据形式的列表,请参见输入数据的形式

输入框中,使用以下方法之一指定信号输入:

  • 在运行时使用输入为每个模拟时间步骤创建数据u = UT (t)对于MATLAB®函数(表示为字符串)或MATLAB表达式。

  • 使用中描述的输入数据表单之一直接指定数据输入数据的形式

以逗号分隔

如果您指定数据集Data,只指定一个数据集对象的输入参数不要将其包含在逗号分隔的列表中。

每个变量或表达式必须求值为对应于模型中特定根级输入端口的适当对象。列表中的每个变量或表达式必须求值为对应于模型的一个根级输入端口的适当对象。第一项对应第一个根级输入端口,第二项对应第二个根级输入端口,以此类推。每个数据样本的维度必须与输入块参数中指定的数据的维度相匹配。

对于一个启用触发块中,驱动启用或触发端口的信号必须是逗号分隔列表中的最后一项。如果您同时拥有启用端口和触发端口,则指定:

  • 启用端口作为列表中的下一个最后一项

  • 触发器端口作为最后一项

使用空矩阵指定端口的接地值。例如,为输入端口加载数据三机一体in3,并使用接地值作为端口in2,在输入参数:

in3 in1, []

输入数据的形式

您可以提供以下格式的输入数据:

笔记

当你指定时间表要加载的数据时间表必须仅包含一个信号的数据。

有关导入总线数据的信息,请参见将总线数据加载到根级输入端口

输入参数的时间值

的时间值输入参数不控制求解器使用的时间。求解器有自己的时间传播逻辑,可能需要任意时间值的输入数据。这个插入根级输入块的参数设置(例如,根级轮廓尺寸块)指定如何处理不存在相应工作区数据的时间步骤的输出。

中指定的时间值输入参数不能是稀疏或包含的值。

数据加载

如果您选择插入数据选项对应的轮廓尺寸,启用,或触发块,Simul金宝appink®根据需要线性插值或外推输入值。

金宝appSimulink解析外部输入规范中使用的符号,如中所述符号分辨率.这个模拟命令提供了一些仅用于编程模拟的数据导入功能。

如果你使用金宝appSimulink.SimulationData.Dataset对象,该对象包括matlab.io.datastore.SimulationDatastore对象作为元素,然后存储在持久存储中的数据将从文件中以流方式传入。有关更多信息,请参见加载大数据模拟

将数据集数据加载到根级输入

可以使用Dataset对象作为配置参数>数据导入/导出>输入参数。指定只有一个数据集对象,并且不要将其包含在以逗号分隔的列表中。元素的数量数据集必须匹配根级输入端口的数量。

数据集元素

A.数据集对象可以包含具有不同数据类型的元素。

对于单个非总线信号数据,您可以为其指定这些类型的数据数据集元素:

  • timeseries

  • 时间表

  • matlab.io.datastore.SimulationDatastore

  • 向量或结构数据

  • A.金宝appSimulink.SimulationData.Signal,金宝appSimulink.SimulationData.State,或金宝appSimulink.SimulationData.DataStoreMemory对象

  • 满足以下要求之一的数组:

    • 一个数组,第一列为时间,其余列分别对应一个输入端口。看到将数据数组加载到根级输入

    • 资料片用于驱动函数调用子系统的根导入的数组。

  • 结构-见将数据结构加载到根级输入

对于总线信号,为每个叶信号使用一个带有数据元素的结构,使用以下格式之一:

  • MATLABtimeseries对象

  • MATLAB时间表对象

  • A.matlab.io.datastore.SimulationDatastore对象

  • 空矩阵

  • 另一种结构,每个信号的数据元素与总线数据结构的这些要求一致

笔记

当你指定时间表要加载的数据时间表只能包含一个信号的数据。

为输入块创建数据集对象

产生金宝appSimulink.SimulationData.Dataset对象轮廓尺寸块中,您可以使用createInputDataset生成的数据集中的信号具有轮廓尺寸块和相应的地面值在模型开始和停止时间。您可以创建timeseries时间表对象的时间和要加载的信号的值。其他信号使用地面值。每一个时间表对象必须仅包含一个信号的数据。

您可以将MATLAB指定的输入端口数据加载到根级别timeseries驻留在工作区中的对象。

笔记

这个文档关于导入MATLAB时间序列数据包括根的例子轮廓尺寸块。除非特别说明,否则这些示例适用于根级启用,触发,从工作空间块。

加载MATLABTimeseries数据到根级输入

时间维度

当你创建一个MATLABtimeseries对象导入数据到Simulink时,时间维度(时间样金宝app本的数量)取决于维度和信号数据的类型。

信号数据维度或类型 时间维度对齐 时间序列构造函数的示例

标量或一维向量

第一个

标量信号的构造函数。时间与第一个维度一致。

t =(0:10)”;Ts = timeseries(sin(t), t);

2D(包括行和列向量)或更大

去年

矩阵信号的构造函数。时间与最后一个维度对齐。

t = 0;Ts = timeseries([1 2;3 4], t);

二维行向量,只有一个时间步长

去年

“InterpretSingleRowDataAs3D”,真的
例如:
t=0;ts=时间序列([12],t,“将SingleRowDataAs3D解释为”,真正的);

枚举数据

如果指定枚举时间表数据,明确插入数据对应的轮廓尺寸块。

加载MATLAB将时间表数据发送到根级输入

一般情况下,可以加载MATLAB时间表数据的加载方式与MATLAB相同timeseries数据。每一个时间表必须仅包含一个信号的数据。

将数据结构加载到根级输入

数据结构

可以将结构的形式从工作区加载到根级输入端口数据,该结构的名称在配置参数>数据导入/导出>输入参数有关定义MATLAB结构的信息,请参见结构数组

您可以为模型作为一个整体或在每个端口的基础上指定结构。的每个端口结构的详细信息输入参数,请参阅结构适用于所有端口或每个端口

该结构总是包含一个信号子结构,该子结构包含一个值字段和一个维度字段。根据您想要执行的建模任务,该结构还可以包括一个时间字段。你使用的结构的形式取决于你要导入数据的信号类型:

  • 离散信号(信号定义为均匀间隔的时间值)-使用具有空时间向量的结构。指定一个信号字段,其中包含一组子结构,每个子结构对应于一个模型输入端口。

  • 连续信号(信号是针对所有时间值定义的)-使用的方法取决于数据是表示平滑曲线(连续)还是表示在其范围(离散)上具有不连续性(跳跃)的曲线。指定一个信号字段,其中包含一组子结构,每个子结构对应于一个模型输入端口。你可以指定时间字段,其中包含一个时间向量。看到指定时间数据

如需导入离散和连续信号的数据,请参见:

结构适用于所有端口或每个端口

您可以指定一个结构来为模型中的所有根级输入端口提供输入,或者您可以为每个端口指定一个单独的结构。

每个端口结构格式由每个端口的单独的带时间结构或不带时间结构组成。每个输入数据结构只有一个信号字段。要指定此选项,请在输入文本字段作为逗号分隔的列表,三机一体,in2,…,酒店.的值三机一体是模型中第一个输入端口的数据,in2用于第二个输入端口,以此类推。

为所有端口指定一种结构:

  • 这个字段必须包含对应输入端口的输入数组。如果指定时间向量,则每个输入必须对应于时间字段。

    如果端口的输入是标量或向量值,则字段必须是m×n的大堆如果指定时间向量,M必须是由指定的时间点的数目时间场和N为每个向量值的长度。

    如果端口的输入是矩阵(2d数组),则字段必须是M-by-N-by-T数组中。MN每个矩阵的维度是否为输入和T为时间点的个数。例如,假设您想要将一个4 × 5矩阵信号的51次采样输入到模型的一个输入端口中。然后,相应的工作空间结构的字段必须相等[4 5]数组必须具有维度4-by-5-by-51

  • 这个字段指定输入的尺寸。如果每个输入是标量或矢量(1-D数组)值,则字段必须是指定向量长度的标量值(对于标量,为1)。如果每个输入是一个矩阵(2-D数组),则字段必须是一个双元素向量,其:

    • 第一个元素指定矩阵中的行数

    • 第二个元素指定列的数目

    笔记

    设置港维参数的轮廓尺寸或者是触发块的值与字段对应的输入结构。如果值不同,则在尝试模拟模型时将得到一条错误消息。

指定时间数据

您可以在要导入的数据结构中指定一个双精度时间向量。例如,在导入信号数据以表示连续的设备或创建测试用例时指定一个时间向量。要测试一个离散算法,使用一个带有空时间向量的结构。此表提供了基于要加载的信号数据类型指定时间值的额外建议。

信号数据 时间数据的建议

轮廓尺寸触发具有离散采样时间的块

不要指定时间向量。金宝appSimulink在每个时间步进加载一个信号值。

等间距离散信号

使用以下形式的表达式:

timeVector = timeStep * [startTime:numSteps-1]'

向量被转置。此外,由于开始时间是一个时间步长,因此需要指定要减去1的步长数。例如,要以0.2个时间步长指定50个时间值,请执行以下操作:

T1=0.2*[0:49]'

笔记

使用这种形式的表达式:

timeVector =(开始时间:步伐:endTime) '

例如,不要使用:

T2 = (0:0.2:10) '

此时间向量形式不等同于乘以时间步长的形式(T1),因为计算机采用双精度四舍五入。金宝appSimulink需要精确的值,没有双精度舍入。使用T2形式会导致所提供的时间向量与Simulink所采取的时间步长不匹配,导致意外的仿真结果。金宝app

不均匀间隔的值

使用任何有效的MATLAB数组表达式;例如,[1:5 5:10](1 6 10 15)

这个从工作空间,从文件,信号编辑器块支持过零检测金宝app。如果根级输入端口连接到这些块中的一个,您可以使用一个重复的时间条目来指定过零时间。

指定信号和时间数据的示例

在第一个例子中,考虑以下只有一个输入端口的模型:

  1. 创建一个输入结构,用于加载类型为二元信号向量的11个时间样本int8到模型:

    N = 10 Ts = 0.1 a.time = Ts*[0:N]';c1 = int8([0:1:10]”);c2 = int8([0:10:100]”);a.signals(1)。值= [c1 c2]; a.signals(1).dimensions = 2;
  2. 配置参数>数据导入/导出>输入参数编辑框,指定变量A.

  3. 轮廓尺寸块对话框中信号的属性选项卡,设置港维2.数据类型int8

作为另一个例子,考虑一个具有两个输入的模型。

假设您想在第一个端口输入正弦波,在第二个端口输入余弦波。定义一个结构,A.,在MATLAB工作空间中:

a.time = 0.1 * (0:1);a.signals(1)。值= sin(a.time); a.signals(1).dimensions = 1; a.signals(2).values = cos(a.time); a.signals(2).dimensions = 1;

输入结构名称(A.)在配置参数>数据导入/导出>输入参数编辑框。

笔记

在这个模型中,您不需要指定维度和数据类型,因为默认值是1.

将数据数组加载到根级输入

可以将工作区中的数据数组加载到根级输入端口数据,该数据数组是在配置参数>数据导入/导出>输入参数。

此导入格式由数据类型的实(非复杂)矩阵组成.矩阵的第一列必须是一个乘向量,按升序排列。其余的列指定输入值。

  • 每一列表示不同的输入轮廓尺寸触发块信号(按顺序)。

  • 每一行都是对应时间点的输入值。

对于触发器块,驱动触发器端口的信号必须是最后一个数据项。

输入矩阵的总列数必须相等n+1,在那里N为进入模型输入端口的信号总数。

指定输入表达式

模型的默认输入表达式为[t,u]默认输入格式为数组.如果您定义TU在MATLAB工作空间中,只需选择配置参数>数据导入/导出>输入参数从模型工作区输入数据。

假设您有一个具有两个参数的模型轮廓尺寸块:

  • 这个三机一体块接收两个信号(块具有港维参数设置为2.).

  • 这个In2块接受一个信号(块使用默认值港维参数)。

您定义TU在MATLAB工作空间中:

numSteps=9;timeStep=0.1;t=(timeStep*(0:numSteps));u=[sin(t),cos(t),4*cos(t)];

当模拟运行时,信号数据罪(t)cost被分配到三机一体和信号数据4 * cost被分配给In2. 输入100个时间点的信号数据。

笔记

数组输入格式只允许加载实际(非复杂)标量或类型为向量的数据. 使用结构格式输入复杂数据、矩阵(二维)数据和除

驱动函数调用子系统的输入端口阵列

可以使用数组通过根级输入端口驱动函数调用子系统。可以使用数组,也可以使用数组中的元素数据集对象数组必须是一个资料片数组中。对root -轮廓尺寸块,选择输出函数调用参数。

例如,这个数据集对象具有数组元素x:

ds=Si金宝appmulink.SimulationData.Dataset;x=[1 3 7 8]';ds=ds.addElement(x,'theElementName');

此模型使用ds的数据集配置参数>数据导入/导出>输入参数。

在模拟模型时,函数调用子系统中记录的信号数据的时间值表明,函数调用子系统仅在存储在中的数组中指定的时间触发ds

>>logsout{1}.Values.Time ans=1 3 7 8

加载MATLAB根导入的时间表达式

指定输入表达式

您可以使用MATLAB时间表达式将数据从工作区加载到根级输入端口。要使用时间表达式,请将表达式作为字符串(用单引号括起来)输入输入领域数据导入/导出窗格。时间表达式可以是任何MATLAB表达式,其计算结果为一行向量的长度等于进入模型输入端口的信号的数量。假设一个模型有一个向量导入,它接受两个信号。另外,假设时代中国是用户定义的函数,它返回长度为两个元素的行向量。以下是这种模型的有效输入时间表达式:

“[3*sin(t),cos(2*t)]”“4 * timefcn (w * t) + 7”

表达式在仿真的每一步都进行计算,将得到的值应用到模型的输入端口。金宝appSimulink定义了这个变量T当它运行模拟时。此外,对于一个变量的函数,您可以在表达式中省略时间变量。例如,表达式被解释为罪(t)

另见

相关实例

更多关于