您可以将数据从工作区加载到使用以下块之一建模的根级导入:
属性的值从工作区导入数据配置参数>数据导入/导出>输入参数。
提示
要将许多信号导入到根级输入端口,可以考虑使用根输入映射器工具。有关更多信息,请参见映射根输入信号数据.
方法也可以从工作区导入数据从工作空间块。详细信息请参见从工作空间文档和为输入测试用例加载数据.
方法手动指定输入数据输入配置参数。要将许多信号加载到根级输入端口,请考虑使用根输入映射工具,该工具将自动在输入参数化使用该工具映射的数据。详细信息请参见使用根导入映射器工具映射数据.
选择配置参数>数据导入/导出>输入参数。
请注意
的使用输入属性的设置无关格式保存日志数据的配置参数。
在相邻的编辑框中输入外部输入规范,然后单击应用.有关可以指定的数据形式的列表,请参见输入数据的形式.
在输入框,使用以下方法之一指定信号输入:
在运行时使用输入为每个模拟时间步骤创建数据UT(t)
对于任意一个MATLAB®函数(以字符串形式表示)或MATLAB表达式。
中描述的输入数据表单之一直接指定数据输入数据的形式.
如果你指定数据集
数据,只指定一个数据集
对象的输入参数。不要将它包含在逗号分隔的列表中。
每个变量或表达式必须计算为对应于模型中特定根级输入端口的适当对象。列表中的每个变量或表达式必须计算为对应于模型的一个根级输入端口的适当对象。第一项对应于第一个根级输入端口,第二项对应于第二个根级输入端口,依此类推。每个数据样本的尺寸必须与输入块参数中指定的数据尺寸匹配。
对于一个启用或触发块时,驱动启用或触发端口的信号必须是逗号分隔的列表中的最后一项。如果你同时有一个enable端口和一个trigger端口,那么指定:
启用端口作为列表中倒数第二个项目
触发器端口作为最后一项
使用空矩阵指定端口的接地值。例如,为输入端口加载数据三机一体
而且in3
,并为端口使用接地值in2
,在“。”中输入以下内容输入参数:
In1, [], in3
您可以提供以下格式的输入数据:
万博1manbetxSimulink.SimulationData.Dataset
-在MATLAB中收集日志数据timeseries
格式。有关更多信息,请参见将数据集数据加载到根级输入.
MATLABtimeseries
-更多信息,请参见:
万博1manbetxSimulink.SimulationData.DatasetRef
-更多信息请参见为模拟加载大数据
MATLAB时间表
-更多信息请参见加载MATLAB时间表数据到根级输入.
阵列-参见将数据数组加载到根级输入.
万博1manbetxSimulink.SimulationData.Signal
-更多信息请参见加载在另一个模拟中登录的数据.
结构——为了简化外部输入数据的规范,您可以为根级输入端口块的子集加载数据。这种方法避免了必须为希望使用接地值的端口创建数据结构。有关接地值的信息,请参见初始化信号和离散状态.有关加载结构数据的详细信息,请参见将数据结构加载到根级输入.
结构数组,包含所有输入端口的数据。
空矩阵——对于需要使用接地值的端口使用空矩阵,而不必创建数据值。
时间表达式-有关详细信息,请参见加载MATLAB时间表达式到根导入.
请注意
当你指定时间表
数据加载时,时间表
必须只包含一个信号的数据。
有关导入总线数据的信息,请参见将总线数据加载到根级输入端口.
中指定的时间值输入参数不能控制求解器使用的次数。求解器有自己的时间传播逻辑,可能需要以任意时间值输入数据。的插入根级输入块的参数设置(例如,根级轮廓尺寸块)指定如何处理不存在相应工作空间数据的时间步长的输出。
方法中指定的时间值输入参数不能为稀疏或包含南
或正
值。
如果您选择插入数据选项对应的轮廓尺寸,启用,或触发块,仿真软件万博1manbetx®根据需要线性插值或外推输入值。
万博1manbetxSimulink解析外部输入规范中使用的符号,如符号解析.的sim卡
命令提供了一些仅可用于编程模拟的数据导入功能。
如果你使用万博1manbetxSimulink.SimulationData.Dataset
对象,该对象包含matlab.io.datastore.SimulationDatastore
对象作为元素,则存储在持久存储器中的数据将从文件流入。有关更多信息,请参见为模拟加载大数据.
属性的值可以使用“数据集”对象配置参数>数据导入/导出>输入参数。只指定一个数据集
对象,不要将其包含在逗号分隔的列表中。元素的个数数据集
必须与根级输入端口的数量匹配。
一个数据集
对象可以包含具有不同数据类型的元素。
对于个别的非总线信号数据,可以指定这些类型的数据数据集
元素:
timeseries
时间表
matlab.io.datastore.SimulationDatastore
双
的向量或结构双
数据
一个万博1manbetxSimulink.SimulationData.Signal
,万博1manbetxSimulink.SimulationData.State
,或万博1manbetxSimulink.SimulationData.DataStoreMemory
对象
数组:满足下列要求之一的数组:
一种数组,第一列为时间,其余列分别对应一个输入端口。看到将数据数组加载到根级输入.
一个资料片
用于驱动函数调用子系统的根导入的数组。
结构-参见将数据结构加载到根级输入.
对于总线信号,为每个叶信号使用一个数据元素的结构,使用以下格式之一:
一个MATLABtimeseries
对象
一个MATLAB时间表
对象
一个matlab.io.datastore.SimulationDatastore
对象
一个空矩阵
另一种结构,每个信号的数据元素与总线数据结构的这些要求一致
请注意
当你指定时间表
数据加载时,时间表
只能包含一个信号的数据。
生成万博1manbetxSimulink.SimulationData.Dataset
对象轮廓尺寸块中,可以使用createInputDataset
函数。所生成数据集中的信号具有轮廓尺寸块和模型启动和停止时对应的接地值。你可以创建timeseries
而且时间表
对象的时间和加载信号的值。其他信号使用地值。每一个时间表
对象必须仅包含一个信号的数据。
您可以将MATLAB指定的数据加载到根级输入端口中
驻留在工作区中的对象。timeseries
请注意
关于导入MATLAB时间序列数据的文档包括root示例轮廓尺寸块。除非另有特别说明,否则这些示例适用于根级启用,触发,从工作空间块。
当你创建一个MATLABtimeseries
对象将数据导入到Simulink中,时间维度(时间万博1manbetx样本的数量)取决于该维度和信号数据的类型。
信号数据维度或类型 | 时间维度对齐 | 时间序列构造函数示例 |
---|---|---|
标量或一维向量 |
第一个 |
标量信号的构造函数。时间与第一维度是一致的。 T = (0:10)';Ts =时间序列(sin(t) t); |
2D(包括行向量和列向量)或更大 |
最后的 |
矩阵信号的构造函数。时间与最后一个维度一致。 T = 0;Ts =时间序列([1 2;3 4], t); |
二维行向量,只有一个时间步长 |
最后的 |
T = 0;Ts =时间序列([1 2],t,“InterpretSingleRowDataAs3D”,真正的);
|
如果您指定枚举
在时间表
数据,清除插入数据参数。轮廓尺寸块。
一般来说,你可以加载MATLAB时间表
数据和加载MATLAB的方法相同timeseries
数据。每一个时间表
必须只包含一个信号的数据。
类型中指定的结构名称,可以将结构的形式从工作区加载到根级输入端口数据配置参数>数据导入/导出>输入参数。有关定义MATLAB结构的信息,请参见结构数组.
您可以为整个模型指定结构,也可以为每个端口指定结构。类的每个端口结构的相关信息输入参数,看到所有端口或每个端口的结构.
该结构总是包含一个信号子结构,其中包含一个值字段和一个维度字段。根据您想要执行的建模任务,该结构还可以包含一个时间字段。你使用的结构的形式取决于你要导入数据的信号的类型:
离散信号(信号是在均匀间隔的时间值上定义的)-使用具有空时间向量的结构。指定一个信号
字段,其中包含子结构数组,每个子结构对应一个模型输入端口。
连续信号(信号是为所有时间值定义的)—您使用的方法取决于数据是代表平滑曲线(连续)还是在其范围内具有不连续(跳跃)的曲线(离散)。指定一个信号
字段,其中包含子结构数组,每个子结构对应一个模型输入端口。您可以指定时间
字段,其中包含一个时间向量。看到指定时间数据.
有关为离散和连续信号导入数据的示例,请参见:
您可以指定一个结构为模型中的所有根级输入端口提供输入,也可以为每个端口指定一个单独的结构。
每个端口结构格式由每个端口单独的带时间结构或无时间结构组成。每个的输入数据结构只有一个信号
字段。中输入结构的名称,以指定此选项输入文本字段为逗号分隔的列表,三机一体,in2,…,酒店
.的值三机一体
是模型中第一个输入端口的数据,in2
对于第二个输入端口,以此类推。
为所有端口指定一个结构:
的值
字段必须包含对应输入端口的输入数组。类型中指定的时间值时间
字段。
如果端口的输入是标量值或矢量值,则值
字段必须为m×n的
数组中。如果你指定一个时间向量,米
必须是由时间
场和N
是每个向量值的长度。
如果端口的输入是矩阵(2-D数组),则值
字段必须为M-by-N-by-T
数组中。米
而且N
每个矩阵的维数输入和T
是时间点的个数。例如,假设您想在模型的一个输入端口中输入51个4 × 5矩阵信号的时间样本。然后,对应的维
工作区结构的字段必须等于5 [4]
和值
数组必须具有维数4-by-5-by-51
.
的维
字段指定输入的尺寸。如果每个输入是标量或向量(1-D数组)值,则维
字段必须是指定向量长度的标量值(标量为1)。如果每个输入是一个矩阵(2-D数组),则维
Field必须是两个元素的向量,其中:
第一个元素指定矩阵中的行数
第二个元素指定列数
您可以指定时间向量double作为要导入的数据结构的一部分。例如,在导入信号数据以表示连续工厂或创建测试用例时,指定一个时间向量。要测试离散算法,请使用具有空时间向量的结构。根据要加载的信号数据类型,此表提供了指定时间值的其他建议。
信号数据 | 时间数据推荐 |
---|---|
轮廓尺寸或触发块与离散采样时间 |
不要指定时间向量。万博1manbetxSimulink在每个时间步加载一个信号值。 |
等间隔离散信号 |
使用这样的表达式: timeVector = timeStep * [startTime:numSteps-1]' 向量是转置的。此外,因为开始时间是一个时间步长,所以需要指定所需的步数- 1。例如,以0.2个时间步长指定50个时间值: T1 = 0.2 * [0:49]' 请注意 做不使用这样的表达式: timeVector = [startTime:timeStep:endTime]' 例如,不要使用: T2 = [0:0.2 .2:10]' 此时间向量形式与乘以时间步长的形式( |
间隔不均匀的值 |
使用任何有效的MATLAB数组表达式;例如, 的从工作空间,从文件,信号编辑器块支持过零检测万博1manbetx。如果根级输入端口连接到其中一个块,则可以使用重复的时间条目指定过零时间。 |
在第一个例子中,考虑以下只有一个输入端口的模型:
创建一个输入结构,用于加载类型的两元信号向量的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
而且数据类型来int8
.
作为另一个例子,考虑一个有两个输入的模型。
假设你想在第一个端口输入一个正弦波,在第二个端口输入一个余弦波。定义一个结构,一个
,在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;
输入结构名称(一个
)在配置参数>数据导入/导出>输入参数编辑框。
请注意
在这个模型中,您不需要指定维度和数据类型,因为默认值为1
而且双
.
控件中指定的数据数组形式可以从工作区中将数据加载到根级输入端口数据配置参数>数据导入/导出>输入参数。
此导入格式由数据类型的实(非复杂)矩阵组成双
.矩阵的第一列必须是按升序排列的时间向量。其余列指定输入值。
每一列表示不同的轮廓尺寸或触发块信号(按顺序)。
每一行都是对应时间点的输入值。
对于触发器块,驱动触发器端口的信号必须是最后一个数据项。
输入矩阵的总列数必须等于N + 1
,在那里n
是进入模型输入端口的信号总数。
模型的默认输入表达式是(t, u)
默认的输入格式是数组
.如果你定义t
而且u
在MATLAB工作空间中,只需选择配置参数>数据导入/导出>输入参数从模型工作区输入数据。
假设你有一个有两个的模型轮廓尺寸块:
的三机一体
块接受两个信号(块有港维参数设置为2
).
的In2
块接受一个信号(块使用默认值港维参数)。
您定义t
而且u
在MATLAB工作空间中:
numSteps = 9;timeStep = 0.1;t = (timeStep*(0:numSteps))';U = [sin(t),cos(t),4*cos(t)];
当模拟运行时,信号数据罪(t)
而且cost
被分配给三机一体
信号数据4 * cost
被分配给In2
.输入100个时间点的信号数据。
请注意
数组输入格式允许您只加载类型的实(非复杂)标量或矢量数据双
.使用结构格式输入复杂数据、矩阵(二维)数据和其他类型的数据双
.
您可以使用数组通过根级输入端口来驱动函数调用子系统。可以使用数组,也可以使用数组中的元素数据集
对象。数组必须是资料片
数组中。对于根级轮廓尺寸块,选择输出函数调用参数。
例如,这个数据集
对象具有数组元素x
:
ds = 万博1manbetxSimulink.SimulationData.Dataset;X = [1 3 7 8]';ds = ds. addelement (x,'theElementName');
此模型使用ds
数据集配置参数>数据导入/导出>输入参数。
在模拟模型时,函数调用子系统中记录的信号数据的时间值显示,函数调用子系统仅在存储在中的数组中指定的时间被触发ds
.
> > logsout {1} . values。时间ans = 1 3 7 8
可以使用MATLAB时间表达式将数据从工作区加载到根级输入端口。要使用时间表达式,请将表达式作为字符串(括在单引号中)输入输入字段数据导入/导出窗格。时间表达式可以是任意MATLAB表达式,其计算结果为行向量的长度等于进入模型输入端口的信号的数量。假设一个模型有一个接受两个信号的向量导入。同时,假设timefcn
用户定义的函数,返回两个元素长的行向量。下面是这样一个模型的有效输入时间表达式:
(3 * sin (t),因为(2 * t)]”“4 * timefcn (w * t) + 7”
表达式在模拟的每个步骤中计算,并将结果值应用到模型的输入端口。万博1manbetxSimulink定义了变量t
当它运行模拟时。此外,对于只有一个变量的函数,您可以在表达式中省略时间变量。例如,表达式罪
被解释为罪(t)
.