public static PropertyMapping <T>[] Read(StreamReader sr) { //read head line that tells mapping count, variable names string line = sr.ReadLine(); var strs = TypeConverterEx.Split <string>(line, 1); int layer = int.Parse(strs[0]); PropertyMapping <T> [] maps = new PropertyMapping <T> [layer]; for (int l = 0; l < layer; l++) { line = sr.ReadLine(); strs = TypeConverterEx.Split <string>(line, 1); int num = int.Parse(strs[0]); line = sr.ReadLine(); var varnam = TypeConverterEx.SkipSplit <string>(line, 1); var ids = new string[num]; var values = new T[num, varnam.Length]; for (int i = 0; i < num; i++) { line = sr.ReadLine(); strs = TypeConverterEx.Split <string>(line); ids[i] = strs[0]; var row = TypeConverterEx.SkipSplit <T>(line, 1); MatrixExtension <T> .AssignRow(values, i, row); } PropertyMapping <T> map = new PropertyMapping <T>(ids, varnam, values); maps[l] = map; } return(maps); }
public static PropertyMapping <float>[] Read(string excelfile, string sheet, int nlayer) { FileStream stream = File.Open(excelfile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); excelReader.IsFirstRowAsColumnNames = true; System.Data.DataSet result = excelReader.AsDataSet(); var dt = result.Tables[sheet]; var dtEnum = dt.AsEnumerable(); int num = dt.Rows.Count; PropertyMapping <float>[] maps = new PropertyMapping <float> [nlayer]; for (int l = 0; l < nlayer; l++) { var ids = from r in dtEnum select r.Field <double>("ID" + (l + 1)).ToString(); string[] varnam = new string[5]; var values = new float[num, varnam.Length]; for (int i = 1; i < 6; i++) { varnam[i - 1] = dt.Columns[l * 6 + i].ColumnName; var colvec = from r in dtEnum select float.Parse(r.Field <double>(varnam[i - 1]).ToString()); MatrixExtension <float> .AssignColumn(values, i - 1, colvec.ToArray()); } PropertyMapping <float> map = new PropertyMapping <float>(ids.ToArray(), varnam, values); maps[l] = map; } return(maps); }
public PropertyMapping(string[] ids, string var, T[] values) { mVarNames = new string[] { var }; mVarValues = new T[ids.Length, 1]; MatrixExtension <T> .AssignColumn(mVarValues, 0, values); mIDs = ids; Build(); }
private void Build() { MappingCount = mIDs.Length; VariableCount = mVarNames.Length; Mappings = new Dictionary <string, T[]>(); Variables = new Dictionary <string, string>(); for (int i = 0; i < VariableCount; i++) { Variables.Add(mIDs[i], mVarNames[i]); } for (int i = 0; i < MappingCount; i++) { Mappings.Add(mIDs[i], MatrixExtension <T> .GetRow(i, mVarValues)); } }
public static float[][] Summerize(float[][][] matrix, int[] intevals, int flag) { int len = matrix[0].Length; int steps = intevals.Length; int nfea = matrix[0][0].Length; int nvar = matrix.Length; float[][] stat = new float[nvar][]; for (int v = 0; v < nvar; v++) { stat[v] = new float[steps]; } float[] temp = new float[nfea]; int cur = 0; for (int v = 0; v < nvar; v++) { for (int s = 0; s < steps; s++) { int inteval = intevals[s]; for (int t = 0; t < inteval; t++) { for (int i = 0; i < nfea; i++) { temp[i] += matrix[v][cur][i]; } cur++; } if (flag == 1) { stat[v][s] = temp.Average() / inteval; } else if (flag == 2) { stat[v][s] = temp.Sum() / inteval; } MatrixExtension <float> .Set(temp, 0); } } return(stat); }