private void AnalysisVectorLength(EvaluationDataModel evaluationData, EvaluationResultModel evaluationResultModel) { var accelerometerList = evaluationData.AccelerometerSampleAnalysisList; var gyrometerList = evaluationData.GyrometerSampleAnalysisList; if (accelerometerList != null && accelerometerList.Count > 1 && gyrometerList != null && gyrometerList.Count > 1) { int minListsCount = Math.Min(accelerometerList.Count, gyrometerList.Count); for (int i = 0; i < minListsCount; i++) { // Vectorlength Accelerometer TimeSpan currentTimeSpan = accelerometerList.ElementAt(i).MeasurementTime; float currentAccelerometerX = accelerometerList.ElementAt(i).CoordinateX; float currentAccelerometerY = accelerometerList.ElementAt(i).CoordinateY; float currentAccelerometerZ = accelerometerList.ElementAt(i).CoordinateZ; // In kartesischen Koordinaten kann die Länge von Vektoren nach dem Satz des Pythagoras berechnet werden. float accelerometerVectorLength = Convert.ToSingle(Math.Sqrt(Math.Pow(currentAccelerometerX, 2d) + Math.Pow(currentAccelerometerY, 2) + Math.Pow(currentAccelerometerZ, 2))); // Vectorlength Gyrometer float currentGyrometerVelocityX = gyrometerList.ElementAt(i).VelocityX; float currentGyrometerVelocityY = gyrometerList.ElementAt(i).VelocityY; float currentGyrometerVelocityZ = gyrometerList.ElementAt(i).VelocityZ; // In kartesischen Koordinaten kann die Länge von Vektoren nach dem Satz des Pythagoras berechnet werden. float gyrometerVectorLength = Convert.ToSingle(Math.Sqrt(Math.Pow(currentGyrometerVelocityX, 2d) + Math.Pow(currentGyrometerVelocityY, 2) + Math.Pow(currentGyrometerVelocityZ, 2))); evaluationResultModel.EvaluationResultList.Add(new EvaluationSample(currentTimeSpan, accelerometerVectorLength, gyrometerVectorLength)); } } }
public async Task<EvaluationResultModel> RunEvaluationDuringMeasurementAsync(EvaluationDataModel evaluationData, EvaluationSettingModel evaluationSetting) { return await Task.Run<EvaluationResultModel>(() => { return Run(evaluationData, evaluationSetting); }); }
private EvaluationResultModel Run(EvaluationDataModel evaluationData, EvaluationSettingModel evaluationSetting) { EvaluationResultModel evaluationResult = new EvaluationResultModel(); AnalysisVectorLength(evaluationData, evaluationResult); AssumingAcceleromterSteps(evaluationResult, evaluationSetting); AssumingGyrometerSteps(evaluationResult, evaluationSetting); DetectSteps(evaluationResult, evaluationSetting); return evaluationResult; }
public async Task<EvaluationResultModel> RunEvaluationAfterMeasurementAsync(EvaluationDataModel evaluationData, EvaluationSettingModel evaluationSetting) { return await Task.Run<EvaluationResultModel>(() => { _lastKnownStep = TimeSpan.Zero; lastAssumedAcclerometerStepTime = TimeSpan.Zero; lastAssumedGyrometerStepTime = TimeSpan.Zero; return Run(evaluationData, evaluationSetting); }); }
//################################################################################################################################## //################################################## Load Evaluation Data ########################################################## //################################################################################################################################## #region Load Evaluation Data internal static async Task<EvaluationDataModel> LoadSamplesForEvaluationAsync(string filename) { EvaluationDataModel evaluationData = new EvaluationDataModel(); if (filename != null && filename != string.Empty) { Task<List<AccelerometerSample>> loadAccelerometerTask = FileService.LoadAccelerometerSamplesFromFileAsync(filename); Task<List<GyrometerSample>> loadGyrometerTask = FileService.LoadGyrometerSamplesFromFileAsync(filename); evaluationData.AddAllAccelerometerAnalysisFromSampleList(await loadAccelerometerTask); evaluationData.AddAllGyrometerAnalysisFromSampleList(await loadGyrometerTask); } return evaluationData; }
private async Task ProcessAnalysis(MeasurementData measurementData, bool isActiveListChoosen) { if (_taskArguments.IsUsedEvaluation) { EvaluationDataModel evaluationDataModel = new EvaluationDataModel(); if (isActiveListChoosen) { evaluationDataModel.AddAllAccelerometerAnalysisFromSampleList(measurementData.GetActivAccelerometerList()); evaluationDataModel.AddAllGyrometerAnalysisFromSampleList(measurementData.GetActivGyrometerList()); } else { evaluationDataModel.AddAllAccelerometerAnalysisFromSampleList(measurementData.GetPassivAccelerometerList()); evaluationDataModel.AddAllGyrometerAnalysisFromSampleList(measurementData.GetPassivGyrometerList()); } EvaluationResultModel evaluationResultModel = await _measurementEvaluationService.RunEvaluationDuringMeasurementAsync(evaluationDataModel, _evaluationSettingModel); _totalSteps += evaluationResultModel.DetectedSteps; await TaskFileService.AppendEvaluationDataToFileAsync(_taskArguments, evaluationResultModel); _taskInstance.Progress = _totalSteps; } }