主要内容

人类活动识别使用手机数据

这个例子展示了如何为人类活动基于智能手机的传感器提取特征信号,人类活动可用于分类的特征提取使用classificationLearner应用。数据使用signalTimeFeatureExtractor和signalFrequencyFeatureExtractor提供方便和性能api。classificationLearner应用程序用于分析和建立分类模型。

加载示例数据集

加载BufferedHumanactivity数据集。

负载BufferedHumanactivity

BufferedHumanactivity数据集包含7776的观察不同物理人类活动:坐着,站立、行走运行。每个观测44样品的长度,与一个活动相关联。数据集包含以下变量:

  • [atx, aty atz]- - -缓冲加速计传感器固定长度的数据

  • actid-响应向量包含活动id的整数:1,2,3,4代表坐着,站立、行走运行分别

  • actnames——名称的活动对应活动ID

  • fs——加速度计传感器数据的采样率

传感器HAR(人类活动识别)应用程序[1]被用来收集原始加速度计信号[2]用于构建BufferedHumanactivity数据集。智能手机所穿的是一个主题在五种不同类型的体育活动。的数据集[2]当时缓冲,每一行对应一个44的观测信号样本对应一个活动。的跳舞活动数据集的[2]时排除BufferedHumanactivity导出数据。

特征提取

主要有两种不同类型的原因我们的信号:

  • 一个与“快速”的变化随着时间的推移,由于身体动力学(物理的运动主题)

  • ,负责“慢”的变化随着时间的推移,由于身体的位置对垂直的引力场

孤立的快速信号变化缓慢的我们将适用高通滤波器原始信号。然后从过滤提取不同的特征和人类活动未经过滤的数据分类使用signalTimeFeatureExtractor和signalFrequencyFeatureExtractor完成)。

atx = atx。”;aty = aty。”;atz = atz。”;%初始化数字滤波器佛罗里达州公路巡警部门的= accHighPassfilter;%使用高通atxFiltered =过滤器(当天,atx);atyFiltered =过滤器(当天,aty);atzFiltered =过滤器(当天,atz);

时间特性,signalTimeFeatureExtractor用于提取过滤信号的均值和RMS ShapeFactor, PeakValue, CrestFactor, ClearanceFactor ImpulseFactor过滤信号的。因此两个signalTimeFeatureExtractor对象meanFE和timeFE配置如下所示。

meanFE = signalTimeFeatureExtractor (“的意思是”,真的,“SampleRate”fs);timeFE = signalTimeFeatureExtractor (“RMS”,真的,“ShapeFactor”,真的,“PeakValue”,真的,“CrestFactor”,真的,“ClearanceFactor”,真的,“ImpulseFactor”,真的,“SampleRate”fs);

的频率特性,signalFrequencyFeatureExtractor用于提取MeanFrequency, BandPower, PowerBandwidth, PeakAmplitude PeakLocation过滤信号的。因此signalFrequencyFeatureExtractor对象freqFE配置如下所示。

freqFE = signalFrequencyFeatureExtractor (“PeakAmplitude”,真的,“PeakLocation”,真的,“MeanFrequency”,真的,“BandPower”,真的,“PowerBandwidth”,真的,“SampleRate”fs);

计算PeakAmplitude PeakLocation韦尔奇的PSD可以通过添加更多的具体要求。在这里我们会发现最多6峰,至少相距0.25赫兹。此外,韦尔奇的PSD计算使用fftLength 256和矩形窗口大小相同的输入信号。

fftLength = 256;窗口= rectwin(大小(atx, 1));setExtractorParameters (freqFE“WelchPSD”,“FFTLength”fftLength,“窗口”,窗口);mindist_xunits = 0.25;minpkdist =地板(mindist_xunits / (fs / fftLength));setExtractorParameters (freqFE“PeakAmplitude”,“MaxNumExtrema”6“MinSeparation”,minpkdist);setExtractorParameters (freqFE“PeakLocation”,“MaxNumExtrema”6“MinSeparation”,minpkdist);

计算功能的所有信号都是使用signalDatastore和特征提取器对象。signalDatastore是用于访问内存缓冲数据的atx, aty, atz, atxFiltered, atyFiltered atzFiltered及其变换方法传递一个处理提取方法的特征提取器对象,如下所示。

meanFeatureDs = signalDatastore ({atx, aty, atz});meanFeatureDs =变换(meanFeatureDs @meanFE.extract);timeFeatureDs = signalDatastore ({atxFiltered、atyFiltered atzFiltered});timeFeatureDs =变换(timeFeatureDs @timeFE.extract);freqFeatureDs = signalDatastore ({atxFiltered、atyFiltered atzFiltered});freqFeatureDs =变换(freqFeatureDs @freqFE.extract);

计算功能对所有信号转换数据存储的readall方法叫做使用“UseParallel”标记分配计算池的工人如果并行计算工具箱安装。最后计算所有功能组合和重塑成rawFeatures和规范化使用rawFeatures的平均值和标准偏差。

meanFeatures = readall (meanFeatureDs,“UseParallel”,真正的);timeFeatures = readall (timeFeatureDs,“UseParallel”,真正的);freqFeatures = readall (freqFeatureDs,“UseParallel”,真正的);%,我们将为每个7776年观测列有66个特性rawFeatures =重塑([meanFeatures, timeFeatures freqFeatures], 66大小(atx, 2))”;fmean =意味着(rawFeatures, 1);fstd =性病(rawFeatures [], 1);特点= rawFeatures-fmean;特点=功能/ fstd;

训练支持向量机(金宝appSVM)分类器

分类,数据导入分类学习者应用和训练支持向量机分类器。另外,使用MATLAB函数trainClassifier自动生成的分类学习者应用基于数据集来训练一个分类器。返回的参数包括数据集是如何分区的信息在培训阶段,所以剩下的样本数据集可用于测试分类的准确性。

featurelabels = getFeatureNames ();FeatureTable = array2table(特性,“VariableNames”,featurelabels);actioncats =分类(actnames) ';FeatureTable。ActivityID = actioncats (actid);[trainedClassifier、准确性、cvp] = trainClassifier (FeatureTable);PredictedAction = trainedClassifier.predictFcn (FeatureTable (cvp)。测试1:宽度(FeatureTable) 1));TrueAction = FeatureTable.ActivityID (cvp.test);图的热图(表(PredictedAction TrueAction),“PredictedAction”,“TrueAction”);

总结

在本例中,您看到了如何提取特征基于人类活动的智能手机使用signalTimeFeatureExtractor传感器信号和signalFrequencyFeatureExtractor。你看到如何使用提取的特征来训练支持向量机模型使用分类学习者应用导致约95%的准确率。作为一种替代方法,我们还可以探索使用深层网络与featureInput层分类的人类活动。

引用

a [1] El Helou传感器HAR识别应用。MathWorks文件交换//www.tatmou.com/matlabcentral/fileexchange/54138-sensor-har-recognition-app

[2]El Helou传感器数据分析。MathWorks文件交换//www.tatmou.com/matlabcentral/fileexchange/54139-sensor-data-analytics--french-webinar-code-

金宝app支持功能

hpfilter功能:

一个函数,返回一个过滤器对象所需的规范。

函数designedFilter = accHighPassfilter Fs = 10;%采样频率Fstop = 0.4;%阻带频率成就= 0.8;%通带频率Astop = 60;%阻带衰减(dB)apas = 0.1;%通带波纹(dB)匹配=“通频带”;%的乐队完全匹配designedFilter = designfilt (“highpassiir”,“StopbandFrequency”Fstop,“PassbandFrequency”成就,“StopbandAttenuation”Astop,“PassbandRipple”apas,“SampleRate”Fs,“DesignMethod”,“ellip”,“MatchExactly”,匹配);结束

trainClassifier功能:

一个函数生成的分类学习者应用程序返回一个训练分类器及其精度。此外cvp添加数据分区变量作为输出参数测试训练模型。

函数[trainedClassifier、validationAccuracy cvp] = trainClassifier (trainingData)% (trainedClassifier validationAccuracy] = trainClassifier (trainingData)%返回一个训练分类器,其准确性。这段代码再现了%分类模型在分类学习者应用。使用训练%生成的代码自动化培训与新数据相同的模型,或%学习如何编程训练模型。%%的输入:% trainingData:这个表包含相同的预测和响应%列导入到应用程序。%%输出:% trainedClassifier:包含训练分类器的结构。的%结构包含各个领域的信息培训%分类器。%% trainedClassifier。新predictFcn:一个函数进行预测%的数据。%% validationAccuracy:双包含百分比的准确性。在%的应用、历史列表显示整体准确度得分%每个模型。%%使用代码来训练模型的新数据。再培训你%分类器,从命令行调用该函数与原始%数据或trainingData新数据作为输入参数。%%为例,训练一个分类器训练与原数据集% T,输入:% (trainedClassifier validationAccuracy] = trainClassifier (T)%%与返回的“trainedClassifier”作出预测新数据T2,%使用% yfit = trainedClassifier.predictFcn (T2)%% T2必须包含至少一个表列预测一样使用%在训练。详情,请输入:% trainedClassifier.HowToPredict%自动生成在01 - jun - 2021 11:34:54 MATLAB%提取预测和响应%这段代码处理数据为训练成正确的形状%的模型。inputTable = trainingData;predictorNames = {“TotalAccXMean”,“TotalAccYMean”,“TotalAccZMean”,“BodyAccXRMS”,“BodyAccYRMS”,“BodyAccZRMS”,“BodyAccXShapeFactor”,“BodyAccYShapeFactor”,“BodyAccZShapeFactor”,“BodyAccXPeakValue”,“BodyAccYPeakValue”,“BodyAccZPeakValue”,“BodyAccXCrestFactor”,“BodyAccYCrestFactor”,“BodyAccZCrestFactor”,“BodyAccXClearanceFactor”,“BodyAccYClearanceFactor”,“BodyAccZClearanceFactor”,“BodyAccXImpulseFactor”,“BodyAccYImpulseFactor”,“BodyAccZImpulseFactor”,“BodyAccXMeanFrequency”,“BodyAccYMeanFrequency”,“BodyAccZMeanFrequency”,“BodyAccXBandPower”,“BodyAccYBandPower”,“BodyAccZBandPower”,“BodyAccXPowerBandwidth”,“BodyAccYPowerBandwidth”,“BodyAccZPowerBandwidth”,“BodyAccXSpectVal1”,“BodyAccXSpectVal2”,“BodyAccXSpectVal3”,“BodyAccXSpectVal4”,“BodyAccXSpectVal5”,“BodyAccXSpectVal6”,“BodyAccXSpectPos1”,“BodyAccXSpectPos2”,“BodyAccXSpectPos3”,“BodyAccXSpectPos4”,“BodyAccXSpectPos5”,“BodyAccXSpectPos6”,“BodyAccYSpectVal1”,“BodyAccYSpectVal2”,“BodyAccYSpectVal3”,“BodyAccYSpectVal4”,“BodyAccYSpectVal5”,“BodyAccYSpectVal6”,“BodyAccYSpectPos1”,“BodyAccYSpectPos2”,“BodyAccYSpectPos3”,“BodyAccYSpectPos4”,“BodyAccYSpectPos5”,“BodyAccYSpectPos6”,“BodyAccZSpectVal1”,“BodyAccZSpectVal2”,“BodyAccZSpectVal3”,“BodyAccZSpectVal4”,“BodyAccZSpectVal5”,“BodyAccZSpectVal6”,“BodyAccZSpectPos1”,“BodyAccZSpectPos2”,“BodyAccZSpectPos3”,“BodyAccZSpectPos4”,“BodyAccZSpectPos5”,“BodyAccZSpectPos6”};预测= inputTable (:, predictorNames);响应= inputTable.ActivityID;isCategoricalPredictor =[假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的);% #好< NASGU >%训练分类器%这段代码指定所有的分类器的选择和训练分类器。模板= templateSVM (“KernelFunction”,多项式的,“PolynomialOrder”2,“KernelScale”,“汽车”,“BoxConstraint”, 1“标准化”,真正的);classificationSVM = fitcecoc (预测,的反应,“学习者”模板,“编码”,“onevsone”,“类名”分类({“奔跑”;“坐”;“站”;“走”}));%创建结果结构预测函数predictorExtractionFcn = @ t (t) (:, predictorNames);svmPredictFcn = @ (x)预测(classificationSVM x);trainedClassifier。predictFcn = @ (x) svmPredictFcn (predictorExtractionFcn (x));%添加额外的字段结构的结果trainedClassifier。RequiredVariables = {“BodyAccXBandPower”,“BodyAccXClearanceFactor”,“BodyAccXCrestFactor”,“BodyAccXImpulseFactor”,“BodyAccXMeanFrequency”,“BodyAccXPeakValue”,“BodyAccXPowerBandwidth”,“BodyAccXRMS”,“BodyAccXShapeFactor”,“BodyAccXSpectPos1”,“BodyAccXSpectPos2”,“BodyAccXSpectPos3”,“BodyAccXSpectPos4”,“BodyAccXSpectPos5”,“BodyAccXSpectPos6”,“BodyAccXSpectVal1”,“BodyAccXSpectVal2”,“BodyAccXSpectVal3”,“BodyAccXSpectVal4”,“BodyAccXSpectVal5”,“BodyAccXSpectVal6”,“BodyAccYBandPower”,“BodyAccYClearanceFactor”,“BodyAccYCrestFactor”,“BodyAccYImpulseFactor”,“BodyAccYMeanFrequency”,“BodyAccYPeakValue”,“BodyAccYPowerBandwidth”,“BodyAccYRMS”,“BodyAccYShapeFactor”,“BodyAccYSpectPos1”,“BodyAccYSpectPos2”,“BodyAccYSpectPos3”,“BodyAccYSpectPos4”,“BodyAccYSpectPos5”,“BodyAccYSpectPos6”,“BodyAccYSpectVal1”,“BodyAccYSpectVal2”,“BodyAccYSpectVal3”,“BodyAccYSpectVal4”,“BodyAccYSpectVal5”,“BodyAccYSpectVal6”,“BodyAccZBandPower”,“BodyAccZClearanceFactor”,“BodyAccZCrestFactor”,“BodyAccZImpulseFactor”,“BodyAccZMeanFrequency”,“BodyAccZPeakValue”,“BodyAccZPowerBandwidth”,“BodyAccZRMS”,“BodyAccZShapeFactor”,“BodyAccZSpectPos1”,“BodyAccZSpectPos2”,“BodyAccZSpectPos3”,“BodyAccZSpectPos4”,“BodyAccZSpectPos5”,“BodyAccZSpectPos6”,“BodyAccZSpectVal1”,“BodyAccZSpectVal2”,“BodyAccZSpectVal3”,“BodyAccZSpectVal4”,“BodyAccZSpectVal5”,“BodyAccZSpectVal6”,“TotalAccXMean”,“TotalAccYMean”,“TotalAccZMean”};trainedClassifier。ClassificationSVM = ClassificationSVM;trainedClassifier。约=这个结构是一个训练有素的模型从分类学习者R2021b出口。”;trainedClassifier。HowToPredict = sprintf (“新表进行预测,T,用途:\ n yfit = c.predictFcn (T) \ nreplacing“c”这个结构体变量的名称,如“trainedModel”。\ n \ nThe表、T必须包含返回的变量:\ n c。RequiredVariables \ nVariable格式(如矩阵或向量,数据类型)必须匹配最初的训练数据。\ nAdditional变量将被忽略。\ n \ nFor更多信息,请参见< a href = " matlab: helpview (fullfile (docroot,“统计”,“stats.map”),“appclassification_exportmodeltoworkspace”)”>如何使用一个导出的模型预测< / >。);%提取预测和响应%这段代码处理数据为训练成正确的形状%的模型。inputTable = trainingData;predictorNames = {“TotalAccXMean”,“TotalAccYMean”,“TotalAccZMean”,“BodyAccXRMS”,“BodyAccYRMS”,“BodyAccZRMS”,“BodyAccXShapeFactor”,“BodyAccYShapeFactor”,“BodyAccZShapeFactor”,“BodyAccXPeakValue”,“BodyAccYPeakValue”,“BodyAccZPeakValue”,“BodyAccXCrestFactor”,“BodyAccYCrestFactor”,“BodyAccZCrestFactor”,“BodyAccXClearanceFactor”,“BodyAccYClearanceFactor”,“BodyAccZClearanceFactor”,“BodyAccXImpulseFactor”,“BodyAccYImpulseFactor”,“BodyAccZImpulseFactor”,“BodyAccXMeanFrequency”,“BodyAccYMeanFrequency”,“BodyAccZMeanFrequency”,“BodyAccXBandPower”,“BodyAccYBandPower”,“BodyAccZBandPower”,“BodyAccXPowerBandwidth”,“BodyAccYPowerBandwidth”,“BodyAccZPowerBandwidth”,“BodyAccXSpectVal1”,“BodyAccXSpectVal2”,“BodyAccXSpectVal3”,“BodyAccXSpectVal4”,“BodyAccXSpectVal5”,“BodyAccXSpectVal6”,“BodyAccXSpectPos1”,“BodyAccXSpectPos2”,“BodyAccXSpectPos3”,“BodyAccXSpectPos4”,“BodyAccXSpectPos5”,“BodyAccXSpectPos6”,“BodyAccYSpectVal1”,“BodyAccYSpectVal2”,“BodyAccYSpectVal3”,“BodyAccYSpectVal4”,“BodyAccYSpectVal5”,“BodyAccYSpectVal6”,“BodyAccYSpectPos1”,“BodyAccYSpectPos2”,“BodyAccYSpectPos3”,“BodyAccYSpectPos4”,“BodyAccYSpectPos5”,“BodyAccYSpectPos6”,“BodyAccZSpectVal1”,“BodyAccZSpectVal2”,“BodyAccZSpectVal3”,“BodyAccZSpectVal4”,“BodyAccZSpectVal5”,“BodyAccZSpectVal6”,“BodyAccZSpectPos1”,“BodyAccZSpectPos2”,“BodyAccZSpectPos3”,“BodyAccZSpectPos4”,“BodyAccZSpectPos5”,“BodyAccZSpectPos6”};预测= inputTable (:, predictorNames);响应= inputTable.ActivityID;isCategoricalPredictor =[假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的,假的);%建立抵抗验证本量利= cvpartition(反应,“坚持”,0.25);trainingPredictors =预测(cvp)。培训:);trainingResponse =响应(cvp)。培训:);trainingIsCategoricalPredictor = isCategoricalPredictor;% #好< NASGU >%训练分类器%这段代码指定所有的分类器的选择和训练分类器。模板= templateSVM (“KernelFunction”,多项式的,“PolynomialOrder”2,“KernelScale”,“汽车”,“BoxConstraint”, 1“标准化”,真正的);classificationSVM = fitcecoc (trainingPredictors,trainingResponse,“学习者”模板,“编码”,“onevsone”,“类名”分类({“奔跑”;“坐”;“站”;“走”}));%创建结果结构预测函数svmPredictFcn = @ (x)预测(classificationSVM x);validationPredictFcn = @ (x) svmPredictFcn (x);%添加额外的字段结构的结果%计算验证预测validationPredictors =预测(cvp)。测试:);validationResponse =响应(cvp)。测试:);[validationPredictions ~] = validationPredictFcn (validationPredictors);%计算精度验证correctPredictions = (validationPredictions = = validationResponse);isMissing = isMissing (validationResponse);correctPredictions = correctPredictions (~ isMissing);validationAccuracy = (correctPredictions) /长度总和(correctPredictions);结束

getFeatureNames功能:

getFeatureNames函数返回所有个体特性计算的名字

函数featureNames = getFeatureNames% FEATURENAMES返回所有个体特性计算的名字idx = 1;featureNames (idx 1) = {“TotalAccXMean”};idx = idx + 1;featureNames (idx 1) = {“TotalAccYMean”};idx = idx + 1;featureNames (idx 1) = {“TotalAccZMean”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXRMS”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYRMS”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZRMS”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXShapeFactor”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYShapeFactor”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZShapeFactor”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXPeakValue”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYPeakValue”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZPeakValue”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXCrestFactor”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYCrestFactor”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZCrestFactor”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXClearanceFactor”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYClearanceFactor”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZClearanceFactor”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXImpulseFactor”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYImpulseFactor”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZImpulseFactor”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXMeanFrequency”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYMeanFrequency”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZMeanFrequency”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXBandPower”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYBandPower”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZBandPower”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXPowerBandwidth”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYPowerBandwidth”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZPowerBandwidth”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXSpectVal1”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXSpectVal2”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXSpectVal3”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXSpectVal4”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXSpectVal5”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXSpectVal6”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXSpectPos1”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXSpectPos2”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXSpectPos3”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXSpectPos4”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXSpectPos5”};idx = idx + 1;featureNames (idx 1) = {“BodyAccXSpectPos6”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYSpectVal1”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYSpectVal2”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYSpectVal3”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYSpectVal4”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYSpectVal5”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYSpectVal6”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYSpectPos1”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYSpectPos2”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYSpectPos3”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYSpectPos4”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYSpectPos5”};idx = idx + 1;featureNames (idx 1) = {“BodyAccYSpectPos6”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZSpectVal1”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZSpectVal2”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZSpectVal3”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZSpectVal4”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZSpectVal5”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZSpectVal6”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZSpectPos1”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZSpectPos2”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZSpectPos3”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZSpectPos4”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZSpectPos5”};idx = idx + 1;featureNames (idx 1) = {“BodyAccZSpectPos6”};结束

另请参阅

(统计和机器学习的工具箱)|