滚动轴承故障诊断

该实例演示了如何基于加速度信号进行滚动轴承故障诊断,特别是在存在来自其他机械部件的强掩蔽信号的情况下。该实例将演示如何应用包络光谱分析和光谱峰度来诊断轴承故障,并能够扩展到大数据应用。

问题概述

在一个滚动元件轴承的局部故障可能发生在外圈,内圈,笼,或滚动元件。轴承以及当所述滚动元件在所述外或内座圈求取局部故障换能器激发的响应,或滚动元件上的故障之间的高频率谐振射到外或内圈[1]。下图显示了一个滚动元件在所述内座圈撞击局部故障。问题是如何检测和识别各类故障。

机械失效预防技术(MFPT)的数据挑战

MFPT挑战数据[4]包含从不同的故障条件的机器收集的23个数据集。第一20个数据组被从轴承试验装置收集,用3良好的条件下,用3恒定负载,7下外圈故障各种负载下外圈故障,和7与各种负载下内圈故障。剩余的3个数据集是从现实世界机器:油泵轴承,中间速度轴承和行星轴承。故障位置是未知的。在此示例中,仅使用从试验装置与公知的条件收集的数据。

每个数据集包含的加速度信号“GS”,采样速率“SR”,轴速度“速率”,负载重量“负载”,以及表示不同故障位置的四个关键频率:ballpass频率外圈(BPFO),ballpass频率内圈(BPFI),基本串频率(FTF),和球旋转频率(BSF)。以下是那些临界频率[1]的公式。

  • Ballpass频率,外座圈(BPFO)

P F Ø = ñ F [R 2 1 - d d COS ϕ

  • 球通频率,内圈(BPFI)

P F 一世 = ñ F [R 2 1 + d d COS ϕ

  • 基本列车频率(FTF),也称为轿厢速度

F Ť F = F [R 2 1 - d d COS ϕ

  • 球(滚子)自旋频率

小号 F = d 2 d [ 1 - d d COS ϕ 2 ]

如该图所示, d 是球的直径, d 为节距直径。的变量 F [R 是轴速, ñ 是滚动元件的数量, ϕ 是轴承接触角[1]。

包络谱分析用于轴承诊断

在MFPT数据集中,轴速是恒定的,因此不需要将订单跟踪作为预处理步骤来消除轴速变化的影响。

当滚动元件命中本地故障在外侧或内侧座圈时,或者当滚动元件上的故障击中外或内座圈,影响将调制所述相应的临界频率,例如BPFO,BPFI,FTF,BSF。因此,产生由幅度解调传达的包络线信号即不能从原始信号的频谱分析更多的诊断信息。采取在数据集中MFPT,例如内圈故障信号。

dataInner =负载(fullfile (matlabroot'工具箱''predmaint'...“predmaintdemos”'bearingFaultDiagnosis'...“train_data”“InnerRaceFault_vload_1.mat”));

可视化在时域的原始内环故障数据。

鑫= dataInner.bearing.gs;傅氏国际= dataInner.bearing.sr;锡矿工=(0:长度(新)(1)/国际;figure plot(tInner, xInner) xlabel(“时间,(s)”)ylabel (“加速度(g)”)标题(“原始信号:内圈故障”)XLIM([0 0.1])

在频域中可视化原始数据。

图[平纳,fpInner] = pspectrum(xInner,fsInner);平纳= 10 *日志10(平纳);图(fpInner,平纳)xlabel(的频率(赫兹))ylabel (的功率谱(dB))标题(“原始信号:内圈故障”)图例(“功率谱”

现在,在低频率范围内的原始信号的功率谱放大采取处BPFI和其第一谐波数的频率响应细看。

figure plot(fpInner, pInner) ncomb = 10;helperPlotCombs (ncomb dataInner.BPFI)包含(的频率(赫兹))ylabel (的功率谱(dB))标题(“原始信号:内圈故障”)图例(“功率谱”“BPFI谐波”)XLIM([0 1000])

没有明确的模式是在BPFI及其谐波可见。对原始信号频率分析不提供有用的诊断信息。

从时域数据可以看出,原始信号的幅值是按一定的频率调制的,调制的主频在1/0.009 Hz左右 111赫兹。已知的是,频率滚动元件打在内圈的局部故障,即BPFI,是118.875赫兹。这表明,轴承可能具有内圈故障。

图subplot(2,1,1) plot(tInner, xInner) xlim([0.04 0.06])“原始信号:内圈故障”)ylabel (“加速度(g)”)注解(“doublearrow”,[0.37 0.71],[0.8 0.8])文本(0.047,20,['0.009秒\约1 / BPFI,BPFI ='num2str (dataInner.BPFI)))

要提取的调制振幅,计算原始信号的包络,和可视化它在底部副区。

副区(2,1,2)[pEnvInner,fEnvInner,xEnvInner,tEnvInner] = envspectrum(xInner,fsInner);情节(tEnvInner,xEnvInner)XLIM([0.04 0.06])xlabel('时间(s)')ylabel (“加速度(g)”)标题(“包络信号”

现在计算所述包络信号的功率谱和看一看在BPFI及其谐波的频率响应。

figure plot(fEnvInner, pEnvInner) xlim([0 1000]) ncomb = 10;helperPlotCombs (ncomb dataInner.BPFI)包含(的频率(赫兹))ylabel (“峰值”)标题(“包络谱:内环故障”)图例(“包络谱”“BPFI谐波”

结果表明,大部分能量都集中在BPFI及其谐波。指示轴承,其中,所述数据的故障类型相匹配的内圈故障。

应用包络谱分析其他故障类型

现在对正常数据和外圈故障数据重复相同的包络谱分析。

dataNormal =负载(fullfile (matlabroot'工具箱''predmaint'...“predmaintdemos”'bearingFaultDiagnosis'...“train_data”'baseline_1.mat'));x普通= dataNormal.bearing.gs;fsNormal = dataNormal.bearing.sr;tNormal =(0:长度(x普通)-1)/ fsNormal;[pEnvNormal,fEnvNormal] = envspectrum(x普通,fsNormal);图图(fEnvNormal,pEnvNormal)NCOMB = 10;helperPlotCombs(NCOMB,[dataNormal.BPFO dataNormal.BPFI])XLIM([0 1000])xlabel(的频率(赫兹))ylabel (“峰值”)标题(“包络谱:正常”)图例(“包络谱”“BPFO谐波”“BPFI谐波”

如所预期的,正常的承载信号的包络谱不显示在BPFO或BPFI任何显著峰。

dataOuter =负载(fullfile (matlabroot'工具箱''predmaint'...“predmaintdemos”'bearingFaultDiagnosis'...“train_data”“OuterRaceFault_2.mat”));xOuter = dataOuter.bearing.gs;fsOuter = dataOuter.bearing.sr;tOuter =(0:长度(xOuter)-1)/ fsOuter;[pEnvOuter,fEnvOuter,xEnvOuter,tEnvOuter] = envspectrum(xOuter,fsOuter);图图(fEnvOuter,pEnvOuter)NCOMB = 10;helperPlotCombs(NCOMB,dataOuter.BPFO)XLIM([0 1000])xlabel(的频率(赫兹))ylabel (“峰值”)标题(“包络谱:外圈断层”)图例(“包络谱”“BPFO谐波”

对于外圈故障信号,BPFO谐波也没有明显的峰值。包络谱分析不能区分外圈故障轴承和正常轴承吗?让我们退一步,再看一下不同条件下的时域信号。

首先,让我们再次在时域中可视化这些信号,并计算它们的峰度。峰度是随机变量的第四个标准化矩。它的特征是信号的冲动性或随机变量尾部的重量。

图副区(3,1,1)= kurtInner峭度(xInner);图(TINNER,xInner)ylabel(“加速度(g)”)标题(['内圈断层,峰度= 'num2str(kurtInner)])XLIM([0 0.1])副区(3,1,2)= kurtNormal峭度(x普通);图(tNormal,x普通)ylabel(“加速度(g)”)标题([“正常,峰度=”num2str(kurtNormal)])XLIM([0 0.1])副区(3,1,3)kurtOuter =峭度(xOuter);图(tOuter,xOuter)xlabel('时间(s)')ylabel (“加速度(g)”)标题([“外圈故障,峰度=”num2str (kurtOuter)]) xlim (0.1 [0])

结果表明,内圈故障信号具有较大的脉冲性,使得包络谱分析能够有效地捕获故障信号在BPFI处的特征。对于外环故障信号,BPFO处的调幅稍微明显,但被强噪声掩盖。正常信号不显示任何幅度调制。在BPFO进行幅度调制提取脉冲信号(或提高信噪比)是包络谱分析前的关键预处理步骤。下一节将介绍峰度图和光谱峰度,提取峰度最高的信号,并对滤波后的信号进行包络谱分析。

峰度图和光谱峰度用于波段选择

峰度图和频谱峰度计算在频带内的局部峰度。它们是定位具有最高峰度(或最高信噪比)[2]的频带的强大工具。在确定峰度最高的频带后,可以对原始信号进行带通滤波,得到更脉冲的包络信号进行频谱分析。

水平= 9;图kurtogram(xOuter, fsOuter, level)

kurtogram表明,以2.67 kHz为中心,带宽为0.763 kHz的频带峰度最高,为2.71。

现在,使用kurtogram建议的最佳窗口长度来计算光谱峰度。

图WC = 128;pkurtosis(xOuter,fsOuter,WC)

为了可视化在频谱的频带,计算所述频谱和放置光谱峰度上的一侧。为了解释在另一种方式的频谱的峰度,高频谱的峰度值表示在对应的频率,这使得频谱的峰度来定位信号[3]的非平稳成分的有用工具功率的高方差。

helperSpectrogramAndSpectralKurtosis (xOuter、fsOuter级别)

通过对中心频率和带宽建议的信号进行带通滤波,可以增强峰度,恢复外环故障的调制幅值。

[〜,〜,〜,FC,〜,BW] = kurtogram(xOuter,fsOuter,电平);BPF = designfilt(“bandpassfir”“FilterOrder”,200,“CutoffFrequency1”,FC-BW / 2,...“CutoffFrequency2”fc + BW / 2,'采样率',fsOuter);xOuterBpf =滤波器(BPF,xOuter);[pEnvOuterBpf,fEnvOuterBpf,xEnvOuterBpf,tEnvBpfOuter] = envspectrum(xOuter,fsOuter,...“FilterOrder”,200,'带',(fc-BW / 2 fc + BW / 2));figure subplot(2,1,1) plot(tOuter, xOuter, tEnvOuter, xEnvOuter)“加速度(g)”)标题([“原始信号:外圈故障,峰度=”, num2str(kurtOuter)]) xlim([0 0.1])图例(“信号”“信封”) subplot(2,1,2) kurtOuterBpf =峰度(xOuterBpf);plot(tOuter, xOuterBpf, tEnvBpfOuter, xEnvOuterBpf)“加速度(g)”)XLIM([0 0.1])xlabel('时间(s)')标题([“带通滤波的信号:外圈故障,峰度=”,num2str(kurtOuterBpf)])图例(“信号”“信封”

可以看出,带通滤波后峰度值增大。现在想象包络信号在频域。

图图(fEnvOuterBpf,pEnvOuterBpf);NCOMB = 10;helperPlotCombs(NCOMB,dataOuter.BPFO)XLIM([0 1000])xlabel(的频率(赫兹))ylabel (“峰值”)标题(“带通滤波的信号的包络谱:外圈故障”)图例(“包络谱”“BPFO谐波”

结果表明,通过带通滤波用的频带中的原始信号所建议的kurtogram和光谱峰度,包络线频谱分析能够在BPFO及其谐波以显示故障签名。

批处理

现在,让我们应用算法一批使用文件数据存储合奏训练数据。

工具箱中提供了数据集的有限部分。将数据集复制到当前文件夹,并启用写权限:

拷贝文件(...完整文件(matlabroot,'工具箱''predmaint'“predmaintdemos”...'bearingFaultDiagnosis'),...'RollingElementBearingFaultDiagnosis-DATA-硕士)fileattrib(完整文件('RollingElementBearingFaultDiagnosis-DATA-硕士“train_data”'*。垫'),' + w ')fileattrib(完整文件('RollingElementBearingFaultDiagnosis-DATA-硕士“test_data”'*。垫'),' + w '

对于完整的数据集,请转到这个链接https://github.com/mathworks/RollingElementBearingFaultDiagnosis-Data将整个存储库下载为zip文件,并将其保存在与活动脚本相同的目录中。使用此命令解压缩文件:

如果存在('RollingElementBearingFaultDiagnosis-Data-master.zip'“文件”)解压缩('RollingElementBearingFaultDiagnosis-Data-master.zip'结束

在这个实施例的结果是从完整数据集生成的。完整数据集包含14个垫文件(2正常,4内环故障,7外圈故障)并且6个垫文件测试数据集(1正常,2内环故障,3外圈故障)训练数据集。

通过分配功能的句柄ReadFcnWriteToMemberFcn,文件集成数据存储将能够导航到文件中,以获取所需格式的数据。例如,MFPT数据有一个结构轴承其存储的振动信号gs,采样率等等。而不是返回轴承结构本身readMFPTBearing功能被写入,使得文件合奏数据存储返回振动信号gs里面的轴承数据结构。

fileLocation = fullfile ('''RollingElementBearingFaultDiagnosis-DATA-硕士“train_data”);fileExtension ='。垫';ensembleTrain = fileEnsembleDatastore(fileLocation, fileExtension);ensembleTrain。ReadFcn=@readMFPTBearing; ensembleTrain.DataVariables = [“GS”“老”“率”“负载”“BPFO”“BPFI”“FTF”“巴斯夫”];ensembleTrain。ConditionVariables = [“标签”“文件名”];ensembleTrain。WriteToMemberFcn = @writeMFPTBearing;ensembleTrain.SelectedVariables = [“GS”“老”“率”“负载”“BPFO”“BPFI”“FTF”“巴斯夫”“标签”“文件名”]
ensembleTrain = fileEnsembleDatastore与属性:ReadFcn:@readMFPTBearing WriteToMemberFcn:@writeMFPTBearing DataVariables:[8×1字符串] IndependentVariables:[0×0字符串] ConditionVariables:[2×1字符串] SelectedVariables:[10×1字符串] READSIZE:1个NumMembers:14 LastMemberRead:[0×0字符串]文件:[14×1串]
ensembleTrainTable =高(ensembleTrain)
开始使用“本地”的个人资料...连接到6名工人并行池(parpool)。ensembleTrainTable = M×10高大表GS SR速率负载BPFO BPFI FTF BSF标签文件名_________________ _____ ____ ______ ______ _____ __________________ ________________________ [146484×1双] 48828 25 0 81.125 118.88 14.838 63.91 “内环故障”, “InnerRaceFault_vload_1”[146484×1双] 48828 25 50 81.125 118.88 14.838 63.91 “内环故障”, “InnerRaceFault_vload_2”[146484×1双] 48828 25 100 81.125 118.88 14.838 63.91 “内环故障”, “InnerRaceFault_vload_3”[146484×1双] 48828 25 150 81.125118.88 14.838 63.91 “内环故障”, “InnerRaceFault_vload_4”[146484×1双] 48828 25 200 81.125 118.88 14.838 63.91 “内环故障”, “InnerRaceFault_vload_5”[585936×1双] 97656 25 270 81.125 118.88 14.838 63.91 “外圈故障”“OuterRaceFault_1”[585936×1双] 97656 25 270 81.125 118.88 14.838 63.91 “外圈故障” “OuterRaceFault_2”[146484×1双] 48828 25 25 81.125 118.88 14.838 63.91 “外圈故障” “OuterRaceFault_vload_1”::::::::::::::::::::

从最后一节的分析可以看出,BPFO和BPFI处的带通滤波包络谱振幅是轴承故障诊断的两个条件指标。因此,下一步就是从所有的训练数据中提取这两个条件指标。为了使算法更健壮,设置一个窄带(带宽=) 10 Δ F ,其中 Δ F 是功率谱的频率分辨率)围绕BPFO和BPFI,然后发现此窄频带内的最大振幅。该算法包含在bearingFeatureExtraction功能如下。需要注意的是围绕BPFI和BPFO包​​络频谱振幅在实施例的其余部分被称为“BPFIAmplitude”和“BPFOAmplitude”。

若要并行处理数据,请使用以下代码%ppool = GCP;%N = numpartitions(ensembleTrain,ppool);%PARFOR CT = 1:n的分区(分区,n, ct);%重置(subEnsembleTrain);%,而hasdata(subEnsembleTrain)% bearingFeatureExtraction (subEnsembleTrain);% 结束% 结束ensembleTrain。dataVariables = [ensembleTrain.DataVariables;“BPFIAmplitude”;“BPFOAmplitude”];重置(ensembleTrain)hasdata(ensembleTrain)bearingFeatureExtraction(ensembleTrain)结束

一旦新的状态指示器将被添加到该文件中乐团数据存储,指定SelectedVariables从文件集成数据存储中读取相关数据,并创建包含提取的条件指示器的特征表。

ensembleTrain.SelectedVariables = [“BPFIAmplitude”“BPFOAmplitude”“标签”];featureTableTrain =高(ensembleTrain);featureTableTrain =收集(featureTableTrain);
评估使用并行池“本地”高表达: - 通11:0%的完全的评价0%完成

- 的1遍1:在3秒的评价完成在3秒完成
featureTableTrain
featureTableTrain =14×3表BPFIAmplitude BPFOAmplitude标签_________________ _________________ _____________ 0.33918 - 0.082296“内座圈的错”0.31488 - 0.026599“内座圈的错”0.52356 - 0.036609“内座圈的错”0.52899 - 0.028381“内座圈的错”0.13515 - 0.012337“内座圈的错”0.0044918 - 0.1835 0.004024 - 0.03574“外环的错”“外环的错”0.0074993 - 0.30166 0.013662 - 0.12468“外环的错”“外环的错”0.0070963 - 0.28215“外环的错”0.0060772 - 0.35241 0.011244 - 0.17975“外环的错”“外圈故障”0.0036798 0.0050208“正常”0.00359 0.0069449“正常”

可视化已创建的功能表。

图gscatter(featureTableTrain.BPFIAmplitude,featureTableTrain.BPFOAmplitude,featureTableTrain.Label,[]“牛+”)包含(“BPFI幅度”)ylabel (“BPFO振幅”

BPFI振幅与BPFO振幅的相对值可以作为判断不同故障类型的有效指标。这里创建了一个新特性,它是两个现有特性的日志比率,并以不同故障类型分组的直方图显示。

featureTableTrain。一世ØLogRatio = log(featureTableTrain.BPFIAmplitude./featureTableTrain.BPFOAmplitude); figure hold直方图(featureTableTrain.IOLogRatio(featureTableTrain.Label ==“内环故障”),'BinWidth',0.5)直方图(featureTableTrain.IOLogRatio(featureTableTrain.Label ==“外环故障”),'BinWidth',0.5)直方图(featureTableTrain.IOLogRatio(featureTableTrain.Label ==“正常”),'BinWidth',0.5)情节([ -  1.5 -1.5的NaN 0.5 0.5],[0 3 0的NaN 3],'K--')保持ylabel ('计数')包含(“日志(BPFIAmplitude / BPFOAmplitude)”)图例(“内环故障”“外环故障”'正常'分类边界的

柱状图清楚地显示了三种不同的轴承状态。BPFI和BPFO振幅之间的测井比值是对轴承故障进行分类的有效特征。为了简化这个例子,我们推导了一个非常简单的分类器:if 日志 BPFIAmp litude BPFOAmp litude - 1 中,轴承具有外圈故障;如果 - 1 < 日志 BPFIAmp litude BPFOAmp litude 0 ,轴承正常;如果 日志 BPFIAmp litude BPFOAmp litude > 0 中,轴承具有内圈故障。

验证使用测试数据集

现在,让我们应用工作流测试数据集和验证在最后一节得到的分类。这里的测试数据包含1个正常数据集,2分内环故障的数据集,和3个外圈故障数据集。

fileLocation = fullfile ('''RollingElementBearingFaultDiagnosis-DATA-硕士“test_data”);fileExtension ='。垫';fileEnsembleDatastore(fileLocation, fileExtension);ensembleTest。ReadFcn=@readMFPTBearing; ensembleTest.DataVariables = [“GS”“老”“率”“负载”“BPFO”“BPFI”“FTF”“巴斯夫”];ensembleTest.ConditionVariables = [“标签”“文件名”];ensembleTest.WriteToMemberFcn = @writeMFPTBearing;ensembleTest.SelectedVariables = [“GS”“老”“率”“负载”“BPFO”“BPFI”“FTF”“巴斯夫”“标签”“文件名”]
独立变量:[0×0字符串]条件变量:[2×1字符串]选择变量:[10×1字符串]ReadSize: 1 NumMembers: 6 LastMemberRead:[0×0字符串]文件:[6×1字符串]
ensembleTest。dataVariables = [ensembleTest.DataVariables;“BPFIAmplitude”;“BPFOAmplitude”];复位(ensembleTest)hasdata(ensembleTest)bearingFeatureExtraction(ensembleTest)结束
ensembleTest.SelectedVariables = [“BPFIAmplitude”“BPFOAmplitude”“标签”];featureTableTest =高(ensembleTest);featureTableTest =聚集(featureTableTest);
评估使用并行池“本地”高表达: - 的1遍1:在1秒完成评价在1秒完成
featureTableTest.IOLogRatio =日志(featureTableTest.BPFIAmplitude./featureTableTest.BPFOAmplitude);身材保持直方图(featureTableTrain.IOLogRatio(featureTableTrain.Label ==“内环故障”),'BinWidth',0.5)直方图(featureTableTrain.IOLogRatio(featureTableTrain.Label ==“外环故障”),'BinWidth',0.5)直方图(featureTableTrain.IOLogRatio(featureTableTrain.Label ==“正常”),'BinWidth',0.5)直方图(featureTableTest.IOLogRatio (featureTableTest.Label = =“内环故障”),'BinWidth'0.1)直方图(featureTableTest.IOLogRatio(featureTableTest.Label ==“外环故障”),'BinWidth'0.1)直方图(featureTableTest.IOLogRatio(featureTableTest.Label ==“正常”),'BinWidth'0.1)情节([ -  1.5 -1.5的NaN 0.5 0.5],[0 3 0的NaN 3],'K--')保持ylabel ('计数')包含(“日志(BPFIAmplitude / BPFOAmplitude)”)图例(“内环故障 - 列车”“外环故障 - 列车”“正常 - 火车”...“内圈故障-测试”“外环故障 - 测试”“正常——测试”...分类边界的

从测试的数据集显示BPFI和BPFO振幅的对数比值一致分布与来自训练数据集对数比值。在最后一节得到的幼稚分类测试数据集达到完美的准确性。

应当指出的是,单一的功能通常是不够的,得到一个分类一般化好。更复杂的分类可以通过将数据分割成多个部分(以创建更多的数据点),提取多个诊断相关的功能,通过它们的重要性级别选择的功能的子集,并使用分类学习应用统计与机床培训的各种分类中获得学习工具箱。对于这个工作流程的详细信息,请参阅例如“使用Simulink来产生故障数据”。金宝app

总结

此示例示出了如何使用kurtogram,谱峰度和包络的频谱,以确定在滚动元件轴承不同类型的故障。然后该算法被应用到磁盘一批数据集,这有助于显示,在BPFI和BPFO滤波的包络的频谱带通的振幅为轴承诊断两个重要条件的指标。

参考文献

[1]兰德尔,罗伯特B.,和杰罗姆安东尼。“滚动轴承诊断-教程”。机械系统和信号处理。卷。25,第2号,2011年,第485-520。

[2]安东尼,杰罗姆。“在kurtogram用于检测瞬时故障的快速计算。”机械系统和信号处理。卷。21,第1期,2007年,第108-124。

sncf的杰罗姆[3]。光谱峰度:描述非平稳信号的有用工具。机械系统和信号处理。第20卷,第2期,2006年,第282-307页。

[4] Bechhoefer,埃里克。“状态检修故障的数据库来测试诊断和预测算法。”2013。https://mfpt.org/fault-data-sets/

辅助函数

功能bearingFeatureExtraction(整体)从轴承数据提取%条件指示符数据=读(合奏);X = data.gs {1};FS = data.sr;%临界频率BPFO = data.BPFO;BPFI = data.BPFI;水平= 9;[〜,〜,〜,FC,〜,BW] = kurtogram(X,FS,电平);%带通滤波包络谱[pEnvpBpf,fEnvBpf] = envspectrum(X,FS,“FilterOrder”,200,'带', [max([fc-BW/2 0]) min([fc+BW/2 0.999*fs/2])];deltaf = fEnvBpf(2) - fEnvBpf(1);BPFIAmplitude = max(pEnvpBpf((fEnvBpf > (BPFI-5*deltaf)) & (fEnvBpf < (BPFI+5*deltaf));BPFOAmplitude = max(pEnvpBpf((fEnvBpf > (BPFO-5*deltaf)) & (fEnvBpf < (BPFO+5*deltaf));writeToLastMemberRead(合奏,表(BPFIAmplitude BPFOAmplitude,“VariableNames”{“BPFIAmplitude”“BPFOAmplitude”}));结束

也可以看看

相关的话题