writeToLastMemberRead
将数据写入集成数据存储的成员
描述
writeToLastMemberRead (
写入指定的一个或多个数据系综
,名称,值
)名称,值
将参数配对到集成数据存储的最后读成员。属性最近访问的成员读
命令。(见用于状态监测和预测性维护的数据集成)。每一个的名字
必须与属性中的条目匹配合奏。DataVariables
.函数写入相应的价值
集成数据存储。
如果
系综
是一个simulationEnsembleDatastore
对象,然后writeToLastMemberRead
将数据写入与最后读集成成员(合奏。LastMemberRead
).如果
系综
是一个fileEnsembleDatastore
对象,然后writeToLastMemberRead
使用属性标识的函数合奏。WriteToMemberFcn
写入数据。如果没有定义该属性,那么writeToLastMemberRead
生成错误。
时,此语法不可用ReadSize
的属性系综
大于1。使用writeToLastMemberRead(合奏,数据)
代替。
例子
将派生数据附加到集成成员
您可以处理集成数据存储中的数据,并向集成成员添加派生变量。对于本例,处理一个变量值来计算一个标签,该标签指示集成成员是否包含存在故障时获得的数据。然后将该标签添加到集合中。
对于本例,使用以下代码创建一个simulationEnsembleDatastore
对象使用之前在不同故障值处运行Simulink®模型生成的数据。金宝app(见generateSimulationEnsemble
)。集成包括一个模型参数的五个不同值的仿真数据,ToothFaultGain
.该模型被配置为将模拟数据记录到一个名为logsout
在mat文件中,这些文件为本例存储在simEnsData.zip
.由于数据量大,所以解压缩
手术可能需要一到两分钟。
解压缩simEnsData.zip%提取压缩文件集合= simulationEnsembleDatastore(pwd,“logsout”)
ensemble = simulationEnsembleDatastore with properties: DataVariables: [5x1 string] IndependentVariables: [0x0 string] ConditionVariables: [0x0 string] SelectedVariables: [5x1 string] ReadSize: 1 NumMembers: 5 LastMemberRead: [0x0 string] Files: [5x1 string]
从集成的第一个成员中读取数据。软件确定哪个集成是第一个成员,并更新属性合奏。LastMemberRead
以反映相应文件的名称。
数据=读取(集合)
data =表1×5PMSignalLogName SimulationInput SimulationMetadata转速器振动 _______________ ______________________________ _________________________________ ___________________ ___________________ {' logsout} {1 x1仿真软件。金宝appSimulationInput} {1x1 金宝appSimulink。SimulationMetadata} {20202x1时间表}{20202x1时间表}
默认情况下,存储在集成数据中的所有变量都被指定为SelectedVariables
.因此,返回的表行包括所有集成变量,包括一个变量SimulationInput
,其中包含金宝app仿真软件。SimulationInput
为该集成成员配置模拟的对象。该对象包括ToothFaultGain
用于集成成员的值,该值存储在其数据结构中变量
财产。检查这个值。(有关如何存储模拟配置的详细信息,请参见金宝app仿真软件。SimulationInput
(金宝app模型))。
数据。SimulationInput {1}
ans = SimulationInput属性:ModelName: 'TransmissionCasingSimplified' InitialState: [0x0 Simulink.op. pr金宝appoperties]ModelOperatingPoint] ExternalInput: [] ModelParameters: [0x0 金宝appSimulink.Simulation.]ModelParameter] BlockParameters: [0x0 金宝appSimulink.Simulation.]BlockParameter]变量:[1x1 Simulink.金宝appSimulation.]变量]PreSimFcn: [] PostSimFcn: [] UserString: "
Inputvars = data.SimulationInput{1}.Variables;Inputvars。的名字
ans = '牙齿缺陷增加'
Inputvars。价值
Ans = -2
假设你想转换ToothFaultGain
将每个集成成员的值转换为一个二进制指示器,以指示是否存在齿故障。进一步假设,根据您对系统的经验,您知道小于0.1量级的齿故障增益值足够小,可以认为是健康的运行。将该集成的增益值转换为一个指标,当-0.1 <增益< 0.1时为0(无故障),否则为1(故障)。
sT = abs(Inputvars.Value) < 0.1;
要将新的牙齿故障指示器附加到相应的集成数据中,首先展开集成中的数据变量列表,以包含指示器的变量。
合奏。DataVariables = [ensemble.DataVariables;“ToothFault”];合奏。DataVariables
ans =6 x1字符串“PMSignalLogName”“SimulationInput”“SimulationMetadata”“Tacho”“振动”“牙齿故障”
这个操作在概念上等同于向集成数据表中添加一列。现在,DataVariables
包含新变量名,将派生值赋给使用的成员的该列writeToLastMemberRead
.
writeToLastMemberRead(合奏,“ToothFault”、圣);
在实践中,您希望将牙齿故障指示器附加到集合中的每个成员。为此,将集成数据存储重置为未读状态,以便下一个读取操作从第一个集成成员开始。然后,循环遍历所有集成成员,计算ToothFault
为每个成员并附加它。的重置
操作不变合奏。DataVariables
,所以“ToothFault”
仍然存在于那个列表中。
重置(套装);sT = false;而Hasdata (ensemble) data = read(ensemble);InputVars = data.SimulationInput{1}.Variables;TFGain = InputVars.Value;sT = abs(TFGain) < 0.1;writeToLastMemberRead(合奏,“ToothFault”、圣);结束
最后,将新的牙齿故障指示器指定为集成数据存储中的条件变量。您可以使用此名称跟踪和引用集成数据中的变量,这些变量表示生成成员数据的条件。
合奏。条件变量= {“ToothFault”};合奏。ConditionVariables
ans = "牙齿缺陷"
您可以将新变量添加到合奏。SelectedVariables
当你想读出来做进一步分析的时候。类中存储的数据的更多操作和分析方法的示例simulationEnsembleDatastore
对象,看到利用Simu金宝applink生成故障数据.
从文件集成数据存储中读取和写入
为存储在MATLAB文件中的数据创建一个文件集成数据存储,并使用告诉软件如何读取和写入该数据存储的函数对其进行配置。(有关配置文件集成数据存储的详细信息,请参见测量数据的文件集成数据存储)。
创建集合数据存储,指向当前文件夹中的数据文件解压缩fileEnsData.zip%提取压缩文件位置= pwd;扩展=“.mat”;fensemble = fileEnsembleDatastore(位置,扩展);指定数据和条件变量fensemble。DataVariables = [“gs”;“老”;“负载”;“速度”];fensemble。ConditionVariables =“标签”;配置可变数据读写功能目录(fullfile (matlabroot,“例子”,“predmaint”,“主要”))确保函数在路径上fensemble。ReadFcn = @readBearingData;fensemble。WriteToMemberFcn = @writeBearingData;
函数告诉读
和writeToLastMemberRead
命令如何与组成集成的数据文件交互。因此,当您调用读
命令,它使用readBearingData
把所有变量都读入fensemble。SelectedVariables
.在这个例子中,readBearingData
从结构中提取请求的变量,轴承
,以及存储在文件中的其他变量。它还解析数据的错误状态的文件名。
指定要读取的变量,并从集合的第一个成员中读取它们。
fensemble。SelectedVariables = [“gs”;“负载”;“标签”];数据=读取(fensemble)
data =1×3表标签gs负载 ________ _______________ ____ " 错误的“x1双}{5000 0
现在可以根据需要处理来自成员的数据。对于本例,计算存储在变量中的信号的平均值gs
.从返回的表中提取数据读
.
Gsdata = data.gs{1};Gsmean = mean(gsdata);
你可以写出均值gsmean
返回数据文件作为一个新变量。为此,首先展开集合中的数据变量列表,以包含新值的变量。调用新变量gsMean
.
fensemble。DataVariables = [fensemble.DataVariables;“gsMean”]
fensemble = fileEnsembleDatastore with properties: ReadFcn: @readBearingData WriteToMemberFcn: @writeBearingData DataVariables: [5x1 string] IndependentVariables: [0x0 string] ConditionVariables: "label" SelectedVariables: [3x1 string] ReadSize: 1 NumMembers: 5 LastMemberRead: "/tmp/Bdoc22b_2134332_1901927/tp5be3083d/predmaint-ex34165887/FaultData_01. "文件:[5x1字符串]
接下来,将派生的平均值写入与最后读集成成员对应的文件。(见用于状态监测和预测性维护的数据集成)。当你打电话时writeToLastMemberRead
,它将数据转换为结构并调用fensemble。WriteToMemberFcn
将数据写入文件。
writeToLastMemberRead (fensemble“gsMean”, gsmean);
调用读
再次将last-read-member指示符推进到集成中的下一个文件,并从该文件读取数据。
数据=读取(fensemble)
data =1×3表标签gs负载 ________ _______________ ____ " 错误的“{5000 x1双}50
属性可以确认该数据来自不同的成员负载
变量。在这里,它的值是50,而在之前的read成员中,它是0。
您可以重复处理步骤来计算并附加该集成成员的平均值。在实践中,自动化读取、处理和写入数据的过程更有用。为此,将集成重置为未读取数据的状态。然后循环整个集成,并为每个成员执行读取、处理和写入步骤。
重置(fensemble)而Hasdata (fensemble) data = read(fensemble);Gsdata = data.gs{1};Gsmean = mean(gsdata);writeToLastMemberRead (fensemble“gsMean”, gsmean);结束
的hasdata
命令返回假
当每个成员都读过了。集合中的每个数据文件都包含gsMean
由数据导出的变量gs
在那个文件里。在开发预测维护算法时,可以使用类似此循环的技术从集成文件中提取和处理数据。有关更详细地说明在算法开发过程中使用文件集成数据存储的示例,请参见滚动元件轴承故障诊断.该示例还展示了如何使用并行计算工具箱™来加速大型数据集合的处理。
要确认派生变量存在于文件集成数据存储中,请从第一个和第二个集成成员中读取它。为此,再次重置集成,并将新变量添加到所选变量中。实际上,在计算出派生值之后,只读取这些值而不重新读取未处理的数据是很有用的,这可能会占用大量内存空间。对于本例,读取所选变量,其中包括新变量,gsMean
,但不包括未经处理的数据,gs
.
重置(fensemble) fensemble。SelectedVariables = [“标签”;“负载”;“gsMean”];Data1 = read(fensemble)
data1 =1×3表标签负载gsMean ________ ____ ________ " 错误的“0 -0.22648
Data2 = read(fensemble)
data2 =1×3表标签负载gsMean ________ ____ ________ " 错误的“50 -0.22937
rmpath (fullfile (matlabroot,“例子”,“predmaint”,“主要”))%重置路径
输入参数
系综
- - - - - -整体数据存储
simulationEnsembleDatastore
对象|fileEnsembleDatastore
对象
集成数据存储以添加数据变量,指定为a:
writeToLastMemberRead
属性标识的集成的最后读成员LastMemberRead
集合的性质。类最近访问的成员是最后读取的集成成员读
命令。(见用于状态监测和预测性维护的数据集成)。
数据
- - - - - -新数据
表格
要写入当前集成成员的新数据,指定为表格
.例如,假设您已经计算出两个值,希望将它们添加到当前成员:存储为MATLAB的向量®工作空间变量Afilt
,标量存储为Amean
.使用下面的命令来构造数据
.
data = table(Afilt,Amean,“VariableNames”, {“Afilt”,“Amean”});
表中的行数必须与ReadSize
的属性系综
.默认情况下,ReadSize
= 1,将单个表行写入单个集成成员。配置时系综
若要一次读取多个成员,则必须写入相同数量的成员。例如,如果ReadSize
= 3,则数据
是一个三行表。
限制
当你使用
simulationEnsembleDatastore
管理远程位置的数据,例如使用Amazon S3™(简单存储服务)的云存储,Windows Azure®Blob存储和Hadoop®分布式文件系统(HDFS™),不能使用writeToLastMemberRead
向集成数据存储区添加数据。
版本历史
在R2018a中引入
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。