public RecaivedData GetDataFromString() { RecaivedData Data = new RecaivedData(); //string[] lines = contextResponse.Split('\n'); string [] lines = File.ReadAllLines(@"C:\Users\USER\Desktop\WriteLines.txt"); int i = 0; foreach (var line in lines) { if (i == 1500) { Data.time = (double.Parse(line)) / 1000; i++; } else if (i < 1500) { string[] measures = line.Split(','); double m1 = double.Parse(measures[0]); double m2 = double.Parse(measures[1]); Data.bar[i] = (m1 * 6.1) / 1000;//pzrelicznik na g Data.hammer[i] = (m2 * 6.1) / 1000; i++; } } return(Data); }
public RecaivedData expFilter(RecaivedData Data, double lambda) { double[] exp = new double[Data.numberOfSamples]; double tp = Data.time / Data.numberOfSamples; for (int i = 0; i < Data.numberOfSamples; i++) { exp[i] = Math.Exp((-1) * lambda * (tp * i)); Data.bar[i] = exp[i] * Data.bar[i]; } return(Data); }
public RecaivedData lowPassFilter(RecaivedData Data, double cutOff) { double tp = Data.time / Data.numberOfSamples; for (int i = 0; i < Data.numberOfSamples; i++) { if ((tp * i) > cutOff) { Data.hammer[i] = 0; } } return(Data); }
public IActionResult AnalizeData() { int numberOfPoints; if (HttpContext.Session.GetInt32("numberOfTestsPerPoint") == null) { int numberOfTestsPerPoint = Int32.Parse(HttpContext.Request.Form["numberOfTestsPerPoint"].ToString()); HttpContext.Session.SetInt32("numberOfTestsPerPoint", numberOfTestsPerPoint); } if (HttpContext.Session.GetInt32("numberOfPoints") == null) { numberOfPoints = Int32.Parse(HttpContext.Request.Form["numberOfPoints"].ToString()); HttpContext.Session.SetInt32("numberOfPoints", numberOfPoints); } else { numberOfPoints = (int)HttpContext.Session.GetInt32("numberOfPoints"); } // HttpContext.Session.SetInt32("numberOfPoints", numberOfPoints); int[] indexOfMounting = new int[2]; if (HttpContext.Session.GetString("indexOfMounting") == null) { indexOfMounting[0] = Int32.Parse(HttpContext.Request.Form["firstMounting"].ToString()); indexOfMounting[1] = Int32.Parse(HttpContext.Request.Form["secondMounting"].ToString()); HttpContext.Session.SetString("indexOfMounting", JsonConvert.SerializeObject(indexOfMounting)); } RecaivedData recaivedDatas = new RecaivedData(); var currentMeasure = (int)HttpContext.Session.GetInt32("currentMeasure"); currentMeasure++; DateTime centuryBegin = new DateTime(2019, 11, 14); DateTime currentDate = DateTime.Now; long elapsedTicks = currentDate.Ticks - centuryBegin.Ticks; TimeSpan elapsedSpan = new TimeSpan(elapsedTicks); HttpContext.Session.SetInt32("currentMeasure", currentMeasure); string filename = "myFile_" + (int)elapsedSpan.TotalSeconds + ".txt"; string str = "{'filename': '" + filename + "'}"; JObject configJson = JObject.Parse(str); // ConnectionService.HandleConnection(configJson).Wait(); recaivedDatas = ConnectionService.GetDataFromString(); string filenameB = "bar" + DateTime.Now.ToString("HH_mm_ss"); string filenameH = "hammer" + DateTime.Now.ToString("HH_mm_ss"); ConnectionService.SaveToFile(filenameB, recaivedDatas.bar, recaivedDatas.time); ConnectionService.SaveToFile(filenameH, recaivedDatas.hammer, recaivedDatas.time); double[] bar_raw = recaivedDatas.bar; double[] hammer_raw = recaivedDatas.hammer; double[] bar = MathOperations.normalization(bar_raw, recaivedDatas.numberOfSamples); double[] hammer = MathOperations.normalization(hammer_raw, recaivedDatas.numberOfSamples); recaivedDatas.bar = bar; recaivedDatas.hammer = hammer; HttpContext.Session.SetString("recaivedDatas", JsonConvert.SerializeObject(recaivedDatas)); List <DataPoint> pointsListBar = Graph.fillDataPoints(bar, recaivedDatas.numberOfSamples, (float)recaivedDatas.time); List <DataPoint> pointsListHammer = Graph.fillDataPoints(hammer, recaivedDatas.numberOfSamples, (float)recaivedDatas.time); ViewBag.TimeBar = JsonConvert.SerializeObject(pointsListBar); ViewBag.TimeHammer = JsonConvert.SerializeObject(pointsListHammer); if (HttpContext.Session.GetString("lambda") == null) { ViewBag.isLambdaSet = 0; } else { ViewBag.isLambdaSet = 1; } return(View("DataTime")); }
public IActionResult Filtration() { var currentMeasure = (int)HttpContext.Session.GetInt32("currentMeasure"); RecaivedData recaivedDatas = JsonConvert.DeserializeObject <RecaivedData>(HttpContext.Session.GetString("recaivedDatas")); double[] bar = recaivedDatas.bar; double[] hammer = recaivedDatas.bar; double lambda; if (HttpContext.Session.GetString("lambda") == null) { lambda = double.Parse(HttpContext.Request.Form["lambda"].ToString()); HttpContext.Session.SetString("lambda", lambda.ToString()); } else { lambda = double.Parse(HttpContext.Session.GetString("lambda")); } double cutOff = double.Parse(HttpContext.Request.Form["cutOff"].ToString()); double offset = double.Parse(HttpContext.Request.Form["offset"].ToString()); recaivedDatas = MathOperations.lowPassFilter(recaivedDatas, cutOff); recaivedDatas.bar = MathOperations.offset(recaivedDatas.bar, recaivedDatas.time, offset); recaivedDatas.hammer = MathOperations.offset(recaivedDatas.hammer, recaivedDatas.time, offset); recaivedDatas = MathOperations.expFilter(recaivedDatas, lambda); List <DataPoint> filtredBar = Graph.fillDataPoints(recaivedDatas.bar, recaivedDatas.numberOfSamples, (float)recaivedDatas.time); List <DataPoint> filtredHammer = Graph.fillDataPoints(recaivedDatas.hammer, recaivedDatas.numberOfSamples, (float)recaivedDatas.time); ViewBag.FiltredBar = JsonConvert.SerializeObject(filtredBar); ViewBag.FiltredHammer = JsonConvert.SerializeObject(filtredHammer); System.Numerics.Complex[] bufferBar = MathOperations.FFTImp(recaivedDatas.bar, (float)recaivedDatas.time, recaivedDatas.numberOfSamples); System.Numerics.Complex[] bufferHammer = MathOperations.FFTImp(recaivedDatas.hammer, (float)recaivedDatas.time, recaivedDatas.numberOfSamples); double[] fftBar = MathOperations.absComplexToDouble(bufferBar, recaivedDatas.numberOfSamples); double[] fftHammer = MathOperations.absComplexToDouble(bufferHammer, recaivedDatas.numberOfSamples); float freq = recaivedDatas.numberOfSamples / (float)recaivedDatas.time; //float freq = fp * recaivedDatas.numberOfSamples; HttpContext.Session.SetString("freq", JsonConvert.SerializeObject(freq)); List <DataPoint> freqPointsBar = Graph.fillDataPoints(fftBar, (recaivedDatas.numberOfSamples / 2), freq); ViewBag.FreqBar = JsonConvert.SerializeObject(freqPointsBar); List <DataPoint> freqPointsHammer = Graph.fillDataPoints(fftHammer, (recaivedDatas.numberOfSamples / 2), freq); ViewBag.FreqHammer = JsonConvert.SerializeObject(freqPointsHammer); System.Numerics.Complex[] frf = MathOperations.FRF(bufferBar, bufferHammer, recaivedDatas.numberOfSamples); double[] frfMagnitude = MathOperations.absComplexToDouble(frf, recaivedDatas.numberOfSamples); List <DataPoint> frfMagnitudePoints = Graph.fillDataPoints(frfMagnitude, recaivedDatas.numberOfSamples / 2, freq); ViewBag.FrfMagitude = JsonConvert.SerializeObject(frfMagnitudePoints); double[] frfReal = MathOperations.getRealValues(frf, recaivedDatas.numberOfSamples); List <DataPoint> frfRealPoints = Graph.fillDataPoints(frfReal, recaivedDatas.numberOfSamples / 2, freq); ViewBag.FrfReal = JsonConvert.SerializeObject(frfRealPoints); double[] frfImaginary = MathOperations.getImaginaryValues(frf, recaivedDatas.numberOfSamples); List <DataPoint> frfImaginaryPoints = Graph.fillDataPoints(frfImaginary, recaivedDatas.numberOfSamples / 2, freq); ViewBag.FrfImaginary = JsonConvert.SerializeObject(frfImaginaryPoints); HttpContext.Session.SetString("frfCurrent", JsonConvert.SerializeObject(frf)); return(View("Filtred")); }