使用From文件块加载数据
这个例子展示了如何使用from file块从MAT文件加载模拟输入数据,包括如何创建和格式化输入数据。您可以通过编程方式创建加载的数据,加载从另一个模拟中记录的数据,或加载从传感器或实验室中收集的真实数据。您可以使用每个格式部分中的代码作为模板,以了解如何格式化自己的模拟输入数据。
检查模型
这个例子使用了一个简单的模型。两个From File块从两个不同的MAT文件加载数据,以创建连接到两个Outport块的信号。一个From File块为标量信号加载数据,并且只有文件名称参数已从默认值更改。另一个From File块配置为为总线加载数据。两个仪表板作用域块显示由每个From File块创建的输出信号。该模型还包含三个Callback Button块,您可以使用From File块支持的每种格式生成带有输入数据的文件。金宝app
该模型使用PreLoadFcn
回调函数:
创建并保存
timeseries
文件中的数据inputData.mat
.在文件中创建并保存总线的输入数据
busData.mat
.创建
金宝app仿真软件。公共汽车
对象,该对象定义了为总线加载数据的From File块的输出数据类型。
在模拟模型之前,使用Callback Button块创建所需格式的数据。要创建数据,单击以选择Callback Button块,然后再次单击以运行代码。您可以在块对话框或属性检查器中查看每个回调按钮块的代码。
创建时间和信号数据
从文件块支持加载存储在金宝apptimeseries
存储在数组中的对象和数据。使用“从文件”块加载的数据必须包含一个时间值,以对应于每个示例值。这个示例创建并加载表示正弦波的10秒数据。
首先,创建一个时间向量。当使用“从文件”块加载数据时,时间值的数据类型必须为双
,且时间值单调递增。
sampleTime = 0.01;numSteps = 1001;time = sampleTime*(0:numSteps-1);
使用本例中的表达式为输入信号创建一个均匀间隔的时间向量,特别是在对离散输入信号建模时。MATLAB®支金宝app持其他几种方法来创建均匀间隔的时间向量,但其他方法可能会在时间数据中引入双精度舍入误差,这可能导致意想不到的模拟结果。
方法创建信号数据罪
函数。使用“从文件”块加载的样例值不能包含南
,正
,或负
值。
数据= sin(2*pi/3*time);
负载timeseries
数据
金宝appSimulink®加载和日志均常用timeseries
对象将时间序列数据传入和传出模拟。当您将MAT文件中的数据保存为时间序列对金宝app象时,From File块支持加载各种输入数据。你加载的信号值可以是:
以外的内置数值数据类型
一半
,int64
,uint64
;一个32位字长度的定点数据类型;或者枚举数据类型。真实的或复杂的。
标量、向量或多维。
中加载数据时timeseries
对象,则必须保存timeseries
7.3 MAT文件中的数据。To File块将数据保存到Version 7.3 MAT文件中。当从使用To file块创建的文件加载数据时,不需要转换文件的版本。
回调按钮块的代码创建带有要加载的时间序列数据的文件
:
将时间和信号数据创建为行向量。
将行向量转置为列向量,以创建
timeseries
具有标量数据值的对象。创建一个
timeseries
对象来包含数据。保存
timeseries
对象在7.3版MAT文件中。
sampleTime = 0.01;numSteps = 1001;time = sampleTime*[0:(numSteps-1)];数据= sin(2*pi/3*time);时间=时间';数据=数据';inputData =时间序列(数据,时间);保存(“inputData.mat”,“inputData”,“-v7.3”);
加载timeseries
数据,可以运行代码创建inputData.mat
文件使用MATLAB命令窗口或选择,然后单击创建带有要加载的时间序列数据的文件
回调按钮块。然后,模拟模型并在Dashboard Scope块上查看加载的数据。
负载阵列数据
可以使用From File块加载格式化为数组的标量或矢量信号数据,其中第一行包含时间数据,后续行包含示例值。当您使用“从文件”块加载数组数据时,示例值必须是实数和双
.From File块可以从任何MAT文件版本加载数组数据。
回调按钮块的代码用数组数据创建要加载的文件
创建时间和信号数据,将行向量连接到数组中,并将数组保存到Version 7 MAT文件中。
sampleTime = 0.01;numSteps = 1001;time = sampleTime*[0:(numSteps-1)];数据= sin(2*pi/3*time);inputData = [time;data];保存(“inputData.mat”,“inputData”)
要加载数组数据,可以运行代码来创建inputData.mat
文件使用MATLAB命令窗口或选择,然后单击用数组数据创建要加载的文件
回调按钮块。然后,模拟模型并在Dashboard Scope块上查看加载的数据。
负载总线数据
From File块支持加载包含的结构金宝apptimeseries
对象作为总线的输入数据。每一个timeseries
对象可以包含从单个对象加载数据时所支持的任何类型的数据金宝apptimeseries
对象。
使用“从文件”块加载总线数据时,必须指定输出数据类型参数为金宝app仿真软件。公共汽车
对象,该对象定义总线。类的层次结构和元素名称必须匹配包含总线数据的结构中的层次结构和字段名称公共汽车
对象,该对象定义输出数据类型。
加载总线数据的From File块有它自己的输出数据类型设置为总线:SinusoidBus
.的PreLoadFcn
函数的回调函数和创建带有要加载的总线数据的文件
回调按钮块都定义了SinusoidBus
对象。
一个公共汽车
对象定义总线层次结构以及总线中元素的属性,如名称和数据类型。的公共汽车
对象定义了总线层次结构、总线中包含的信号的名称以及嵌套总线的数据类型。公共汽车,SinusoidBus
,包含一个信号,余弦
,和一个嵌套总线称为SineBus
,包含两个信号,正弦
而且BigSine
.
elems(1) = 金宝appSimulink.BusElement;elem(1)。Name =的正弦;elems(2) = 金宝appSimulink.BusElement;elem(2)。Name =“BigSine”;sininebus 金宝app= Simulink.Bus;SineBus。元素= elems;清晰的初步的;elems(1) = 金宝appSimulink.BusElement;elem(1)。Name =“SineBus”;elem(1)。数据Type =“巴士:SineBus”;elems(2) = 金宝appSimulink.BusElement;elem(2)。Name =的余弦;SinusoidBus = 金宝appSimulink.Bus;SinusoidBus。元素= elems;
有关使用定义总线的详细信息金宝app仿真软件。公共汽车
对象,看到使用Simulink指定总线属性。金宝app总线对象数据类型.
的创建要加载的总线数据
的结构timeseries
类的层次结构和元素名称相匹配的层次结构和字段名称SinusoidBus
对象,并将结构保存到Version 7.3 MAT文件中。
sampleTime = 0.01;numSteps = 1001;time = sampleTime*[0:(numSteps-1)];时间=时间';数据= sin(2*pi/3*time);Cosdata = cos(2*pi/3*time);Ampdata = 2*data;busData。余弦= timeseries(cosdata,time); busData.SineBus.Sine = timeseries(data,time); busData.SineBus.BigSine = timeseries(ampdata,time); save(“busData.mat”,“busData”,“-v7.3”);
要加载总线数据,可以运行代码来创建busData.mat
文件使用MATLAB命令窗口或选择,然后单击创建要加载的总线数据
回调按钮块。然后,模拟模型并在Dashboard Scope块上查看加载的数据。
当您使用From File块为总线加载输入数据时,您不需要为总线中的每个元素提供数据。若要部分指定总线的输入数据,可以省略结构中的相应字段或将其值指定为[]
.为包含嵌套总线的总线指定部分数据时,可以将整个嵌套总线指定为[]
From File块为嵌套总线的所有元素提供基础值。