static void Main(string[] args) { /* * var t0 = 103.6374; * using (var writer = new StreamWriter(@"C:\Users\mhorowitzgelb\Desktop\basicAsymetricGaussian.csv")) * { * for (double x = -3; x <= 3.1; x += 0.01) * { * var _x = x + t0; * var y = function.GetY(_x, new[] {56564, t0, 0.00001, 1}); * writer.WriteLine(_x+","+y); * } * }*/ var unalteredData = loadCsv(@"C:\Users\mhorowitzgelb\Desktop\multiplePeaks.csv", 6); unalteredData = new[] { unalteredData[0], unalteredData[1] }; var function = new SummedAlteredGaussian(3, 1, 10, unalteredData); //var function = new MultiTransitionAlteredGaussian(5,10,unalteredData); //{14000,5,5,5,5,5,43.9,0.01,0.15,1000,1300,2100,1900,900,500,44.9,0.01,0.15,100,5,4000,5,5,5,46,0.01,0.15} var lma = new LMA(function, new [] { 14000, 43.9, 0.01, 0.15, 1000, 44.9, 0.01, 0.15, 100, 46, 0.01, 0.15 }, function.AlteredData, null, new DotNetMatrix.GeneralMatrix(12, 12), 1, 1000); lma.Fit(); writeCSV(lma, function, unalteredData, @"C:\Users\mhorowitzgelb\Desktop\multiPeaksFit.csv", 1); }
public static void writeCSV(LMA lma, SummedAlteredGaussian function, double[][] originalData, string path, int transitions) { using (var writer = new StreamWriter(path)) { var xList = originalData[0]; for (int i = 0; i < xList.Length; i++) { var x = xList[i]; writer.Write("" + x); for (int j = 0; j < transitions; j++) { var y = originalData[1 + j][i]; writer.Write("," + y); } for (int j = 0; j < transitions; j++) { var fitValue = function.GetY(x, j, lma.Parameters); writer.Write("," + fitValue); } writer.WriteLine(); } } }