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;
     }
 }