东莞网站建设方案外包,甘肃两学一做网站,网站引导视频怎么做,如何申请个人网站域名目录
语法
说明
示例
访问使用Dataset格式记录的数据 打开模型vdp
使用 Dataset 对象来组合模拟输入信号 Simulink.SimulationData.Dataset的功能是访问已记录的模拟数据或组合模拟输入数据。
语法
ds Simulink.SimulationData.Dataset
ds Simulink.SimulationData.Da…目录
语法
说明
示例
访问使用Dataset格式记录的数据 打开模型vdp
使用 Dataset 对象来组合模拟输入信号 Simulink.SimulationData.Dataset的功能是访问已记录的模拟数据或组合模拟输入数据。
语法
ds Simulink.SimulationData.Dataset
ds Simulink.SimulationData.Dataset(dataToConvert)
ds Simulink.SimulationData.Dataset(dataToConvert,DatasetName,dsName)
说明 ds Simulink.SimulationData.Dataset这种语法创建一个空的、未命名的Dataset对象可以随后手动添加元素。通常在您希望创建一个空的Dataset对象来存储要使用Inport或In Bus Element块加载的外部输入数据时使用。 ds Simulink.SimulationData.Dataset(dataToConvert)这种语法创建一个未命名的Dataset对象其中包含一个或多个元素每个元素包含由dataToConvert指定的数据。可以使用这种语法将使用其他格式的数据转换为Dataset格式。有关详细信息请参阅将timeseries对象转换为Dataset对象。 ds Simulink.SimulationData.Dataset(dataToConvert, DatasetName, dsName)这种语法创建一个以dsName指定名称的Dataset对象其中包含一个或多个元素每个元素包含由dataToConvert指定的数据。这种语法也用于将其他格式的数据转换为Dataset格式但它允许您为Dataset指定名称。
示例
访问使用Dataset格式记录的数据 打开模型vdp 该模型产生两个输出x1和x2。
mdl vdp;
open_system(mdl);
如图所示 模拟该模型并同时记录块状态和输出数据。
out sim(mdl,SaveState,on); 所有已记录的数据都以单个变量 out 返回它是一个 Simulink.SimulationOutput 对象。SimulationOutput 对象包含一个 Simulink.SimulationData.Dataset 对象该对象将每种已记录的数据分组在一起。
out
out Simulink.SimulationOutput:tout: [64x1 double] xout: [1x1 Simulink.SimulationData.Dataset] yout: [1x1 Simulink.SimulationData.Dataset] SimulationMetadata: [1x1 Simulink.SimulationMetadata] ErrorMessage: [0x0 char] 使用点符号访问包含已记录输出数据的 Dataset 对象 yout。该 Dataset 对象包含每个输出的 Simulink.SimulationData.Signal 对象。
out
out Simulink.SimulationOutput:tout: [64x1 double] xout: [1x1 Simulink.SimulationData.Dataset] yout: [1x1 Simulink.SimulationData.Dataset] SimulationMetadata: [1x1 Simulink.SimulationMetadata] ErrorMessage: [0x0 char] Signal 对象包含关于信号的元数据包括生成信号的块的路径和端口的索引。使用 getElement 函数按名称访问包含信号 x1 数据的 Signal 对象。您还可以使用花括号({}) 按索引访问 Dataset 对象中的元素。
outputX1 getElement(outputs,x1)
outputX1 Simulink.SimulationData.SignalPackage: Simulink.SimulationDataProperties:Name: x1PropagatedName: BlockPath: [1x1 Simulink.SimulationData.BlockPath]PortType: inportPortIndex: 1Values: [1x1 timeseries] 信号数据存储在 Signal 对象的 Values 属性中以 timeseries 对象的形式。
outputValsX1 outputX1.ValuestimeseriesCommon Properties:Name: x1Time: [64x1 double]TimeInfo: tsdata.timemetadataData: [64x1 double]DataInfo: tsdata.datametadata 时间值位于 timeseries 对象的 Time 属性中信号值位于 Data 属性中。
outputTimesX1 outputValsX1.Time
outputTimesX1 64×100.00010.00060.00310.01570.07850.28440.54070.87881.2788⋮outputDataX1 outputValsX1.Data
outputDataX1 64×12.00002.00002.00002.00001.99981.99431.93791.81551.59901.2687⋮还可以将这些步骤合并到一行代码中以访问时间值或数据值。
outputDataX1 getElement(out.yout,x1).Values.Data
outputDataX1 64×12.00002.00002.00002.00001.99981.99431.93791.81551.59901.2687⋮使用 Dataset 对象来组合模拟输入信号 创建三个模拟输入信号的数据并将它们组合到一个 Dataset 对象中。一个简单的模型使用三个根级 Inport 块来加载 Dataset 对象的内容。模型中的 Dashboard Scope 块显示使用加载的输入数据创建的每个信号。 首先创建要加载到模型中的信号数据。在建模离散输入信号时可以使用此示例中的表达式创建均匀间隔的时间向量。MATLAB® 支持多种其他方法来创建均匀间隔的向量但其他方法可能会在时间数据中引入双精度舍入误差从而导致意外的模拟结果。
sampleTime 0.01;
numSteps 1001;
time sampleTime*(0:numSteps-1);
time time; 创建正弦信号、余弦信号和线性信号的信号数据。
sineVals sin(2*pi/3*time);
cosVals cos(2*pi/3*time);
lineVals time; 创建一个 timeseries 对象来存储每个信号的数据。为每个 timeseries 对象赋予一个描述性名称以便在它们被组合到 Dataset 对象中后信号可以容易识别。
sineTS timeseries(sineVals,time,Name,Sine Wave);
cosTS timeseries(cosVals,time,Name,Cosine Wave);
lineTS timeseries(lineVals,time,Name,Line); 创建一个 Dataset 对象并使用 addElement 函数将每个 timeseries 对象添加到 Dataset 对象中。
inputData Simulink.SimulationData.Dataset;
inputData.Name inputData;
inputData addElement(inputData,sineTS);
inputData addElement(inputData,cosTS);
inputData addElement(inputData,lineTS)
inputData
Simulink.SimulationData.Dataset inputData with 3 elementsName BlockPath ___________ _________ 1 [1x1 timeseries] Sine Wave 2 [1x1 timeseries] Cosine Wave 3 [1x1 timeseries] Line - Use braces { } to access, modify, or add elements using index.当使用根级Inport块加载外部输入数据时您需要在“数据导入/导出”面板的“模型配置参数”中的“Input”参数中指定要加载的数据。打开模型LoadInputDataset并查看Input参数已指定为inputData。
open_system(LoadInputDataset.slx); 对模型进行仿真。与第一个Inport块连接的Dashboard Scope块显示正弦信号与第二个Inport块连接的Dashboard Scope块显示余弦信号与第三个Inport块连接的Dashboard Scope块显示线性信号。
out sim(LoadInputDataset.slx);
如图所示 可以交换Dataset对象中元素的顺序然后在元素与Inport块的映射方式上看到相应的变化。
inputData{1} lineTS;
inputData{3} sineTS
inputData
Simulink.SimulationData.Dataset inputData with 3 elementsName BlockPath ___________ _________ 1 [1x1 timeseries] Line 2 [1x1 timeseries] Cosine Wave 3 [1x1 timeseries] Sine Wave - Use braces { } to access, modify, or add elements using index. 再次对模型进行仿真。现在显示第一个元素的Dashboard Scope块显示直线而显示第三个元素的Dashboard Scope块显示正弦波反映了Dataset对象中元素的新顺序。
out sim(LoadInputDataset.slx);
如图所示 一个Simulink.SimulationData.Dataset对象用于组合相关的数据。通常已记录的模拟结果会被组织在Dataset对象中。当加载初始状态以及使用Inport块或Signal Editor块加载外部输入数据时也可以使用Dataset对象来组合模拟输入数据。 通过记录模拟数据创建的Dataset对象包含一个或多个元素。每个元素包含一个已记录的信号、输出、数据存储或状态的数据。每个元素都是一个对象对象的类型取决于它所包含的数据类型。 信号和输出 — Simulink.SimulationData.Signal对象 状态和最终状态 — Simulink.SimulationData.State对象 数据存储 — Simulink.SimulationData.DataStoreMemory对象
当创建一个用于组合模拟输入数据的Dataset对象时每个元素包含一个信号、总线或总线数组的数据。可以使用任何受支持的加载方法支持的数据格式添加数据。
通常在记录模拟数据时会创建一个Simulink.SimulationData.Dataset对象包括以下情况
使用信号记录时记录数据。使用Dataset格式记录输出、状态或最终状态数据。记录数据存储。使用记录块将数据记录到工作区或MAT文件中。使用Scope块以Dataset格式记录数据。使用Floating Scope或Scope Viewer记录数据。
要将模型的外部输入数据组合到Dataset对象中您可以执行以下操作
创建一个空的Dataset对象并使用addElement函数添加输入数据。使用createInputDataset创建一个Dataset对象其中包含模型中每个根级Inport块或In Bus Element块的元素。然后指定每个元素的数据。使用Signal Editor交互式地创建和编辑包含模拟输入数据的Dataset对象。有关详细信息请参阅创建和编辑信号数据。 还可以通过将使用其他格式的数据转换为使用Dataset格式的数据来创建Dataset对象。将所有数据保存在一个通用格式中可以简化后处理过程。有关详细信息请参阅将timeseries对象转换为Dataset对象。
注意 可以使用花括号({})按索引访问、添加或修改Dataset对象中的元素。 要通过名称访问、添加或修改Dataset对象的元素可以使用getElement、addElement和setElement函数。 当使用Dataset对象组合模拟输入时您可以使用Signal Editor或Signal Editor块轻松更改提供模拟输入的Dataset对象。 当使用根级Inport块从Dataset对象加载外部输入数据时可以使用Root Inport Mapper将Dataset对象中的每个元素按块名称、块路径、信号名称或端口顺序映射到Inport块。也可以编写自己的函数来进行数据映射。 当将Dataset对象中的数据保存到MAT文件时如果Dataset对象的内容过大而无法完全装入内存考虑保存到Version 7.3 MAT文件。您可以创建一个Simulink.SimulationData.DatasetRef它引用了一个MAT文件中的Dataset对象而不需要将数据加载到内存中进行数据处理或加载大数据。 要将Dataset对象保存到一个可以在早期版本中打开的MAT文件中请使用save函数而不是exportToPreviousRelease函数。 可以编写自己的读取器使用Simulink.io.FileType类将数据从文件导入到基础工作区、模型工作区或Signal Editor中的Dataset对象。