主要内容

将数据加载到根级输入端口

您可以将来自工作区的数据加载到使用这些块之一建模的根级Inport:

  • inport.堵塞

  • 使能够堵塞

  • 扳机具有基于边缘(上升、下降或两者之一)的触发器类型的块

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

提示

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

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

指定输入数据

控件可以手动指定输入数据输入配置参数。要将许多信号加载到根级输入端口,请考虑使用root Inport映射工具,它自动指定输入参数使用工具映射的数据。有关详细信息,请参见使用root Inport Mapper工具映射数据

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

    请注意

    使用输入配置参数独立于格式配置参数,用于保存记录数据。

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

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

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

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

逗号分隔列表

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

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

使能够或者扳机块,驱动启用或触发端口的信号必须是逗号分隔列表中的最后一个项目。如果您拥有启用和触发器端口,请指定:

  • 启用端口作为列表中的倒数第二项

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

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

In1,[],In3

输入数据的形式

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

请注意

当您指定时时间表加载数据,时间表必须只包含一个信号的数据。

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

输入参数的时间值

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

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

数据加载

如果你选择内插数据选项对应的inport.使能够, 或者扳机块,仿真软件金宝app®必要时线性插值或外推输入值。

金宝appSimulink解析外部输入规范中使用的符号,如符号解析.的sim卡命令提供了一些仅为程序化模拟可用的数据导入功能。

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

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

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

数据集的元素

一个数据集对象可以包括具有不同数据类型的元素。

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

  • 时间序列

  • 时间表

  • matlab.io.datastore.simulationdatastore.

  • vectors或结构数据

  • 一个金宝appSimulink.SimulationData.Signal金宝appsimulink.simulationData.state., 或者金宝appSimulink.SimulationData.DataStoreMemory对象

  • 符合其中一个要求的数组:

    • 第一列中具有时间的数组和每个与输入端口对应的剩余列。看将数据数组加载到根级输入

    • 一个资料片用于驱动函数呼叫子系统的根Inport的数组。

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

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

  • 一个MATLAB时间序列对象

  • 一个MATLAB时间表对象

  • 一个matlab.io.datastore.simulationdatastore.对象

  • 空矩阵

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

请注意

当您指定时时间表加载数据,时间表可以仅包含一个信号的数据。

为导入块创建数据集对象

生成一个金宝appsimulink.simulationdata.dataset.来自根级的对象inport.块中,您可以使用createInputDataset函数。属性中生成的数据集中的信号具有inport.模型开始和停止时间的块和相应的接地值。你可以创建时间序列时间表用于加载信号的时间和值的对象。其他信号使用地面值。每个时间表对象必须仅包含一个信号的数据。

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

请注意

关于导入MATLAB时期数据的本文档包括根的示例inport.块。除非另有说明,否则该示例适用于根级使能够扳机, 和从工作空间块。

装载MATLABTimeseries数据到根级输入

时间维度

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

信号数据尺寸或类型 时间维度对齐 TimeSeries构造函数的示例

标量或1D矢量

第一的

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

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

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

最后的

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

t = 0;TS =时间系([1 2; 3 4],T);

2D行向量,只有一次步骤

最后的

'threadetsinglerowdataas3d',真实
例如:
t = 0;t = timeseries([1 2],“InterpretSingleRowDataAs3D”, 真的);

枚举数据

如果指定枚举时间表数据,清除内插数据参数对应的inport.块。

装载MATLAB时间表数据到根级输入

一般来说,您可以加载matlab时间表数据的加载方式与MATLAB相同时间序列数据。每个时间表必须只包含一个信号的数据。

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

数据结构

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

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

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

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

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

有关导入离散和连续信号的数据的示例,请参阅:

所有端口或每个端口的结构

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

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

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

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

    如果端口的输入是标量或矢量值,则字段必须是一个m×n的数组中。如果你指定一个时间向量,必须是时间场和N是每个矢量值的长度。

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

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

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

    • 第二个元素指定列数

    请注意

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

指定时间数据

您可以指定一部分的时间向量,作为要导入的数据结构的一部分。例如,在导入信号数据时指定时间向量以表示连续工厂或创建测试用例。为了测试离散算法,使用具有空时间向量的结构。此表提供了用于指定时间值的其他建议,以便根据要加载的信号数据的种类。

信号数据 时间数据的建议

inport.或者扳机块与离散采样时间

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

均匀间隔的离散信号

使用这种形式的表达式:

timeVector = startTime + sampleTime*(0:numSteps-1)';

使用冒号运算符从0到所需的时间步长数减1,以1为增量计数第一点,0.然后,通过所需的采样时间缩放所得到的矢量,因此向量中的元素之间的增量现在等于采样时间。转载,因为支持加载的大多数数据格式需要列时间向量。金宝app要创建具有除零之外的开始时间的时间向量,请将所需的开始时间添加到向量。

例如,使用这段代码创建一个均匀间隔的时间向量,起始点为1,包括101.时间点,并有一个样本时间0.2

T1 = 1 + 0.2*(0:00)'

请注意

使用此表单中的表达式:

timevector = [starttime:timestep:endtime]'

例如,请勿使用:

T2 = [0:0.2:10]'

向量的时间T2.不等于时间向量T1.因为双精度舍入。时间矢量的双精度舍入T2.会导致输入的时间向量与求解器计算的Times步长存在差异,导致意外的仿真结果。

不均匀间隔的值

使用任何有效的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).Values = [C1 C2];A.Signals(1).dimensions = 2;
  2. 在里面配置参数>数据导入/导出>输入参数编辑框,指定变量一个

  3. 在里面inport.块对话框,在信号的属性选项卡,设置港维2数据类型INT8.

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

假设你想把正弦波输入到第一个端口,把余弦波输入到第二个端口。定义一个结构,一个如下所示,在Matlab工作区中:

a.time = 0.1 * [0:1]';A.Signals(1).Values = Sin(A.time);A.Signals(1).Dimensions = 1;A.Signals(2).Values = COS(A.Time);A.Signals(2).dimensions = 1;

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

请注意

在此模型中,您无需指定维度和数据类型,因为默认值是1

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

您可以以数据阵列的形式从工作区加载到根级输入端口数据,您指定配置参数>数据导入/导出>输入参数。

这种导入格式由真实的(非复杂的)数据类型矩阵组成.矩阵的第一列必须是升序的次数。剩下的列指定输入值。

  • 每列代表不同的输入inport.或者扳机块信号(按顺序排列)。

  • 每行是相应时间点的输入值。

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

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

指定输入表达式

模型的默认输入表达式是(t, u)默认输入格式是大批.如果你定义tu在MATLAB工作区中,只需选择“配置参数>数据导入/导出>输入参数从模型工作区输入数据。

假设你有一个有两个的模型inport.块:

  • 三机一体块接受两个信号(块有港维参数设置为2)。

  • In2块接受一个信号(块使用默认值港维范围)。

你定义tu在MATLAB工作空间中:

numSteps = 9;步伐= 0.1;t =(步伐* (0:numSteps)) ';u =[罪(t),因为(t) 4 * cos (t));

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

请注意

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

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

您可以使用数组来通过根级输入端口驱动函数调用子系统。您可以使用数组或数组是一个元素数据集对象。数组必须是资料片数组中。对于根级inport.块,选择输出函数调用参数。

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

ds = 金宝appSimulink.SimulationData.Dataset;X = [1 3 7 8]';ds = ds.addElement (x,“theElementName”);

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

当您模拟模型时,函数呼叫子系统中的记录信号数据的时间值表明函数呼叫子系统仅触发存储在阵列中的次数ds

> > logsout {1} . values。时间ans = 1 3 7 8

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

指定输入表达式

您可以使用MATLAB时间表达式表达式从工作区加载数据到根级输入端口。要使用时间表达式,请输入作为字符串(括在单引号中)的表达式输入场的数据导入/导出窗格。时间表表达式可以是任何MATLAB表达式,其评估到行的长度等于的行向量,到输入模型的输入端口的信号的数量。假设模型有一个矢量Inport,它接受两个信号。也是假设timefcn是用户定义的函数,返回行向量两个元素长。以下是此类模型的有效输入时间表达式:

(3 * sin (t),因为(2 * t)]”'4 * timefcn(w * t)+7'

在模拟的每个步骤中评估表达式,将结果值应用于模型的输入端口。金宝appsimulink定义变量t当它运行模拟时。此外,对于单变量函数的表达式,可以省略时间变量。例如,表达式被解释为sin(t)

另请参阅

课堂

相关的例子

更多关于